--- /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);
+ }
+ }
+