commonappservices/alarmserver/Test/unit/src/TEAlarmTestMANEventObserver.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/alarmserver/Test/unit/src/TEAlarmTestMANEventObserver.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,156 @@
+// 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 "TEAlarmTestMANEventObserver.h"
+#include "consoleantestclient.h"
+
+
+// //
+//
+// CMANEventObserver : public CActive
+//
+// //
+
+CMANEventObserver::CMANEventObserver(const TEventEntry& aEventEntry, RANTestClient& aANTestClient,
+								MMANEventHandler& aEventHandler) : CActive(EPriorityStandard),
+		iCAASClient(aANTestClient), iEventHandler(aEventHandler), iObserveEvent(aEventEntry)
+	{
+	CActiveScheduler::Add(this);	
+	}
+
+
+CMANEventObserver::~CMANEventObserver()
+	{
+	Deque();	
+	}
+
+
+CMANEventObserver* CMANEventObserver::NewL(const TEventEntry& aEventEntry, 
+		RANTestClient& aANTestClient, MMANEventHandler& aEventHandler)
+	{
+	__ASSERT_ALWAYS( aEventEntry.iType<=EEventDelete, \
+						User::Leave(KErrArgument));
+	CMANEventObserver* self = 
+			new (ELeave) CMANEventObserver(aEventEntry, aANTestClient, aEventHandler);
+
+	self->RegisterForNextEventL();
+	return self;
+	}
+
+
+void CMANEventObserver::RegisterForNextEventL()
+	{
+	switch (iObserveEvent.iType)
+		{
+		case EEventSetAlarm:
+				iCAASClient.NotifyOnAlarm(iASShdAlarm, iStatus);
+				break;
+		case EEventSetState: 
+				iCAASClient.NotifyOnState(iObserveEvent.iAlarmId, 
+								iObserveEvent.iAltSFlags, iStatus);
+				break;
+		case EEventVisible:
+				iCAASClient.NotifyOnVisible(iObserveEvent.iAlarmId,
+								iObserveEvent.iVisible, iStatus);
+				break;
+		case EEventSoundStart:
+				iCAASClient.NotifyOnSoundStart(iObserveEvent.iAlarmId,
+								iSoundFileName,	iStatus);
+				break;
+		case EEventSoundStop:
+				iCAASClient.NotifyOnSoundStop(iObserveEvent.iAlarmId, iStatus);
+				break;
+		case EEventDelete:
+				iCAASClient.NotifyOnDelete(iObserveEvent.iAlarmId, iStatus);
+				break;
+		default: 
+				User::Leave(KErrArgument);
+		}
+	SetActive();
+	}
+
+
+void CMANEventObserver::RunL()
+	{
+	if (iStatus!=KErrNone)
+		{
+		TEventEntry errorEvent(EException, iStatus.Int());
+		iEventHandler.HandleEventL(errorEvent);
+		return;
+		}
+
+	RegisterForNextEventL();
+
+	if (iObserveEvent.iType==EEventSetAlarm)
+		{
+		iObserveEvent.iAlarmId = iASShdAlarm.Id();
+		}
+
+	iEventHandler.HandleEventL(iObserveEvent);
+	}
+	
+	
+
+// //
+//
+// CMANDelayedActionHandler : public CTimer
+//
+// //
+
+CMANDelayedActionHandler::CMANDelayedActionHandler(const TEventEntry& anAction,
+					MMANEventHandler& aEventHandler) : CTimer(EPriorityStandard),
+					iEventHandler(aEventHandler), iDelayedAction(anAction)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+
+CMANDelayedActionHandler::~CMANDelayedActionHandler()
+	{
+	Deque();	
+	}
+
+
+CMANDelayedActionHandler* CMANDelayedActionHandler::NewL(const TEventEntry& anAction, 
+								MMANEventHandler& aEventHandler)
+	{
+	__ASSERT_ALWAYS( (anAction.iType==EActionAddAlarm \
+							|| anAction.iType==EActionUserWait \
+								|| anAction.iType==EActionReconnectToAS), \
+						User::Leave(KErrArgument));
+	CMANDelayedActionHandler* self = new (ELeave) CMANDelayedActionHandler(anAction, aEventHandler);
+	CleanupStack::PushL(self);
+	self->ConstructL();						// CTimer::ConstructL();
+	CleanupStack::Pop();
+	
+	self->After(1000000 * anAction.iPeriod);
+	
+	return self;
+	}
+
+
+void CMANDelayedActionHandler::RunL()
+	{
+	if (iStatus==KErrNone)
+		{
+		iEventHandler.HandleEventL(iDelayedAction);
+		}
+	else
+		{
+		TEventEntry errorEvent(EException, iStatus.Int());
+		iEventHandler.HandleEventL(errorEvent);
+		}
+	}
+