uifw/AknGlobalUI/AknDynamicSoftNote/src/AknDynamicSoftNoteObserver.cpp
changeset 0 2f259fa3e83a
--- /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