--- /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