diff -r 41a7f70b3818 -r 5266b1f337bd phoneuis/easydialing/edcontactor/src/edmsgeditors.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edmsgeditors.cpp Wed Sep 01 12:30:10 2010 +0100 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2010 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: Launching Editors. +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" +#include + +#ifndef KSenduiMtmOnlineAlbumUidValue +#define KSenduiMtmOnlineAlbumUidValue 0x200009D5 +#endif + +/// Unnamed namespace for local definitions +namespace + { + +#ifdef _DEBUG + enum TPanicCode + { + EPanicPreCond_ExecuteL = 1 + }; + + void Panic(TPanicCode aReason) + { + _LIT(KPanicText, "CCmsMsgEditors"); + User::Panic (KPanicText, aReason); + } +#endif // _DEBUG + + + } /// namespace + + +// ============================ MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------- +// CEDMsgEditors::ExecuteL +// --------------------------------------------------------- +void CEDMsgEditors::ExecuteL( const TUid aServiceUid, + const TDesC& aAddress, const TDesC& aName ) + { + __ASSERT_DEBUG (NULL != &aAddress && 0 < aAddress.Size() && + NULL != &aName && 0 < aName.Size() && + NULL != &aServiceUid, Panic (EPanicPreCond_ExecuteL)); + + //ParsePhoneNumber may only short length of phonenumber, + //so it's safe to use same lenght as given number and do the copy. + HBufC* numBuf = aAddress.AllocLC(); + TPtr numDesc( numBuf->Des() ); + + //Unieditor could also use email adresses. If parser returns EFalse, do not care. + if ( KSenduiMtmUniMessageUid == aServiceUid) + { + CommonPhoneParser::ParsePhoneNumber( numDesc, + CommonPhoneParser::EPhoneClientNumber ); + } + + CSendUi* sendui = CSendUi::NewLC (); + CMessageData* msgdata = CMessageData::NewLC (); + msgdata->AppendToAddressL( *numBuf, aName); + + if (KSenduiMtmSmtpUid == aServiceUid) + { + const TUid KMfEUidValue = { 0x1020695B }; //Where is this defined? + TBool mailAvailabe = EFalse; + TBool mfeAvailable = EFalse; + TUid selectedServiceID = KNullUid; + RPointerArray availableServices; + sendui->AvailableServicesL(availableServices, KGenericMtmPlugin); + for (TInt i=0; i < availableServices.Count(); i++) + { + if (!(availableServices[i]->ServiceFeatures() & CSendingServiceInfo::EServiceInValid)) + { + if (availableServices[i]->ServiceId() == KSenduiMtmSmtpUid) + { + mailAvailabe = ETrue; + } + else if (availableServices[i]->ServiceId() == KMfEUidValue) + { + selectedServiceID = availableServices[i]->ServiceId(); + mfeAvailable = ETrue; + } + } + } + availableServices.ResetAndDestroy(); + + if (mailAvailabe && mfeAvailable) + { + CArrayFixFlat* servicesToDim = new (ELeave) CArrayFixFlat(1); + CleanupStack::PushL(servicesToDim); + + servicesToDim->AppendL(KSenduiTechnologySmsUid); + servicesToDim->AppendL(KSenduiTechnologyMmsUid); + //servicesToDim->AppendL(KSenduiTechnologyMailUid); Email is not to be dimmed + servicesToDim->AppendL(KSenduiTechnologyUniEditorUid); + servicesToDim->AppendL(KSenduiTechnologyIrUid); + servicesToDim->AppendL(KSenduiTechnologyBtUid); + servicesToDim->AppendL(KSenduiTechnologyIMUid); + servicesToDim->AppendL(KMmsDirectUpload); + servicesToDim->AppendL(KMmsIndirectUpload); + servicesToDim->AppendL(KMmsUploadService1Id); + servicesToDim->AppendL(KMmsUploadService2Id); + servicesToDim->AppendL(KMmsUploadService3Id); + servicesToDim->AppendL(KMmsUploadService4Id); + const TUid KShareOnline = { KSenduiMtmOnlineAlbumUidValue }; // From SendUiInternalConsts.h + servicesToDim->AppendL(KShareOnline); + + sendui->ShowQueryAndSendL(msgdata, KCapabilitiesForAllServices, servicesToDim); + servicesToDim->Reset(); + CleanupStack::PopAndDestroy(servicesToDim); + } + else if (mfeAvailable) + { + sendui->CreateAndSendMessageL(selectedServiceID, msgdata, KNullUid, EFalse); + } + else + { + sendui->CreateAndSendMessageL(aServiceUid, msgdata, KNullUid, EFalse); + } + } + else + { + sendui->CreateAndSendMessageL(aServiceUid, msgdata, KNullUid, EFalse); + } + + CleanupStack::PopAndDestroy( 3, numBuf ); //msgdata, sendui + + return; + } +// End of File