diff -r 000000000000 -r 2f259fa3e83a uifw/AknGlobalUI/AknDynamicSoftNote/src/AknDynamicSoftNoteObserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AknGlobalUI/AknDynamicSoftNote/src/AknDynamicSoftNoteObserver.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,166 @@ +/* +* Copyright (c) 2008 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: Dynamic soft notification observer. +* +*/ + +#include "AknDynamicSoftNoteObserver.h" +#include "AknDynamicSoftNotifier.h" +#include "aknsoftnoteconsts.h" + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::CAknDynamicSoftNoteObserver +//----------------------------------------------------------------------------- +// +CAknDynamicSoftNoteObserver::CAknDynamicSoftNoteObserver( + CAknDynamicSoftNotifier& aDynamicSoftNotifier, + MAknDynamicSoftNoteObserver* aClientApp, + TInt aNoteId ) : + // members + CActive(EPriorityStandard), + iClientApp(aClientApp), + iDynamicSoftNotifier(aDynamicSoftNotifier), + iNoteId(aNoteId) + { + CActiveScheduler::Add(this); + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::ConstructL +//----------------------------------------------------------------------------- +// +void CAknDynamicSoftNoteObserver::ConstructL() + { + User::LeaveIfError(iSession.Connect()); + User::LeaveIfError(iSession.PreAllocateDynamicSoftNoteEvent(iNoteId)); + IssueRequest(); + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::~CAknDynamicSoftNoteObserver +//----------------------------------------------------------------------------- +// +CAknDynamicSoftNoteObserver::~CAknDynamicSoftNoteObserver() + { + Cancel(); + iSession.Close(); + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::NewL +//----------------------------------------------------------------------------- +// +EXPORT_C CAknDynamicSoftNoteObserver* CAknDynamicSoftNoteObserver::NewL( + CAknDynamicSoftNotifier& aDynamicSoftNotifier, + MAknDynamicSoftNoteObserver* aClientApp, + TInt aNoteId) + { + CAknDynamicSoftNoteObserver* self = + CAknDynamicSoftNoteObserver::NewLC(aDynamicSoftNotifier, aClientApp, aNoteId); + + CleanupStack::Pop(self); + return self; + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::NewLC +//----------------------------------------------------------------------------- +// +EXPORT_C CAknDynamicSoftNoteObserver* CAknDynamicSoftNoteObserver::NewLC( + CAknDynamicSoftNotifier& aDynamicSoftNotifier, + MAknDynamicSoftNoteObserver* aClientApp, + TInt aNoteId) + { + CAknDynamicSoftNoteObserver* self = + new (ELeave) CAknDynamicSoftNoteObserver(aDynamicSoftNotifier, aClientApp, aNoteId); + + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::NoteId +//----------------------------------------------------------------------------- +// +TInt CAknDynamicSoftNoteObserver::NoteId() const + { + return iNoteId; + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::RunL +//----------------------------------------------------------------------------- +// +void CAknDynamicSoftNoteObserver::RunL() + { + TInt err = iStatus.Int(); + + if (err == KErrNone) + { + // Handle response. + TInt actionId = iEventBuffer(); + + // IssueRequest(); + switch (actionId) + { + case EAknDynamicSNoteEventAccepted: + { + iClientApp->NotificationAccepted(iNoteId); + break; + } + case EAknDynamicSNoteEventCanceled: + { + iClientApp->NotificationCanceled(iNoteId); + break; + } + default: + { + User::Panic(_L("DynamicSoftNote"), KErrArgument); + break; + } + } + } +#ifdef _DEBUG + else + { + _LIT(KDmsg1, "AknDynamicSoftNoteObserver, RunL(): iStatus not equal to KErrNone, err:%d"); + RDebug::Print(KDmsg1, err); + } +#endif + + iDynamicSoftNotifier.DeleteObserver(this); + // This instance is deleted + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::IssueRequest +//----------------------------------------------------------------------------- +// +void CAknDynamicSoftNoteObserver::IssueRequest() + { + iSession.NotifyDynamicSoftNoteEvent(iStatus, iEventBuffer); + SetActive(); + } + +//----------------------------------------------------------------------------- +// CAknDynamicSoftNoteObserver::DoCancel +//----------------------------------------------------------------------------- +// +void CAknDynamicSoftNoteObserver::DoCancel() + { + iSession.CancelDynamicSoftNoteEventNotification(); + } + +// End of File