diff -r 000000000000 -r 8e480a14352b messagingfw/sendas/test/sendastextnotifier/src/CSendAsTextNotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/sendas/test/sendastextnotifier/src/CSendAsTextNotifier.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,151 @@ +// Copyright (c) 2005-2009 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: +// + +#include "csendastextnotifier.h" +#include + +/** UID of the SendAs notifier channel to get the user's confirmation */ +const TUid KSendAsNotifierPluginUid = {0x10208C14}; +const TUid KTechViewScreenOutputChannel = {0x10208C14}; + + +EXPORT_C CArrayPtr* NotifierArray() + { + CArrayPtrFlat* subjects=NULL; + TRAPD( err, subjects=new (ELeave)CArrayPtrFlat(1) ); + if( err == KErrNone ) + { + TRAP( err, subjects->AppendL( CSendAsTextNotifier::NewL() ) ); + return(subjects); + } + else + { + return NULL; + } + } + +CSendAsTextNotifier* CSendAsTextNotifier::NewL() + { + CSendAsTextNotifier* self=new (ELeave) CSendAsTextNotifier(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +void CSendAsTextNotifier::ConstructL() + { + iSelection = new (ELeave) CMsvEntrySelection(); + } + +CSendAsTextNotifier::~CSendAsTextNotifier() + { + delete iSelection; + } + +CSendAsTextNotifier::CSendAsTextNotifier() + { + iInfo.iUid = KSendAsNotifierPluginUid; + iInfo.iChannel = KTechViewScreenOutputChannel; + iInfo.iPriority = ENotifierPriorityHigh; + } + +void CSendAsTextNotifier::Release() + { + delete this; + } + +/** +Called when a notifier is first loaded to allow any initial construction that is required. + */ +CSendAsTextNotifier::TNotifierInfo CSendAsTextNotifier::RegisterL() + { + return iInfo; + } + +CSendAsTextNotifier::TNotifierInfo CSendAsTextNotifier::Info() const + { + return iInfo; + } + +/** +The notifier has been deactivated so resources can be freed and outstanding messages completed. + */ +void CSendAsTextNotifier::Cancel() + { + } + +/** +Start the Notifier with data aBuffer. + +Not used for confirm notifiers +*/ +TPtrC8 CSendAsTextNotifier::StartL(const TDesC8& /*aBuffer*/) + { + User::Leave(KErrNotSupported); + return KNullDesC8(); + } + +/** +Start the notifier with data aBuffer. aMessage should be completed when the notifier is deactivated. + +May be called multiple times if more than one client starts the notifier. The notifier is immediately +responsible for completing aMessage. +*/ +void CSendAsTextNotifier::StartL(const TDesC8& aBuffer, TInt /*aReplySlot*/, const RMessagePtr2& aMessage) + { + // extract the notifier request parameters + TMsvPackedNotifierRequest::UnpackL(aBuffer, *iSelection, iSecurityInfo); + iMessage = aMessage; + + // Simulate "User Response" + CDummyObserver* ob1 = new(ELeave) CDummyObserver; + CleanupStack::PushL(ob1); + + CMsvSession* session = CMsvSession::OpenSyncL(*ob1); + CleanupStack::PushL(session); + + CMsvEntry* cEntry = session->GetEntryL(iSelection->At(0)); + CleanupStack::PushL(cEntry); + + TMsvEntry entry = cEntry->Entry(); + + // complete with TMsvEntry::iError as return code + if (entry.iError != KErrNone) + { + iMessage.Complete(KErrPermissionDenied); + } + else + { + iMessage.Complete(KErrNone); + } + + // Clear the CMsvEntrySelection + iSelection->Reset(); + + CleanupStack::PopAndDestroy(3, ob1); // cEntry, session, ob1 + } + +/** +Update a currently active notifier with data aBuffer. + +Not used for confirm notifiers +*/ +TPtrC8 CSendAsTextNotifier::UpdateL(const TDesC8& /*aBuffer*/) + { + User::Leave(KErrNotSupported); + return KNullDesC8(); + } +