commonappservices/alarmserver/AlarmAlert/Source/ASAltEventHandler.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonappservices/alarmserver/AlarmAlert/Source/ASAltEventHandler.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,165 @@
+// Copyright (c) 1999-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 "ASAltEventHandler.h"
+
+// User includes
+#include <asaltdefs.h>
+#include "ASAltClientSession.h"
+#include "ASAltAlarmAlertObserver.h"
+#include "ASSrvStaticUtils.h"
+#include "ASAltRequestQuietPeriodEnd.h"
+
+//
+// ----> CASAltEventHandler (source)
+//
+
+//*************************************************************************************
+CASAltEventHandler::CASAltEventHandler(RASAltClientSession& aSession, MASAltAlarmAlertObserver& aObserver)
+:	CActive(EPriorityUserInput), iSession(aSession), iObserver(aObserver)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+
+//*************************************************************************************
+CASAltEventHandler::~CASAltEventHandler()
+	{
+	Cancel();
+	delete iRequestQuietPeriodEnd;
+	}
+
+
+//*************************************************************************************
+void CASAltEventHandler::ConstructL()
+	{
+	iRequestQuietPeriodEnd=CASAltRequestQuietPeriodEnd::NewL(iSession,iObserver);
+	RequestEvents();
+	}
+
+
+//*************************************************************************************
+CASAltEventHandler* CASAltEventHandler::NewL(RASAltClientSession& aSession, MASAltAlarmAlertObserver& aObserver)
+	{
+	CASAltEventHandler* self = new(ELeave) CASAltEventHandler(aSession, aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+//
+//
+//
+
+
+//*************************************************************************************
+/**
+ * Request events from the Alarm Alert Server
+ */
+void CASAltEventHandler::RequestEvents()
+	{
+	__ASSERT_DEBUG(!IsActive(), ASSrvStaticUtils::Fault(ASSrvStaticUtils::EASSrvFaultAlarmAlertServerResponseReaderAlreadyActive));
+
+	Session().NotifyOnResponse(iStatus, iTimeValueFromAlarmAlertServer, iAlarmId);
+	SetActive();
+	}
+
+
+//
+//
+//
+
+
+//*************************************************************************************
+void CASAltEventHandler::RunL()
+	{
+	const TInt response = iStatus.Int();
+	if	( response == KErrCancel
+		|| response == KErrServerTerminated)	// if Alarm Alert Server dies, don't ask
+												// for any further information from it
+		return;
+
+	// Request any further events from the server. Do this now so that
+	// we don't miss anything whilst processing this event.
+	RequestEvents();
+
+	switch(response)
+		{
+	// The Alarm Alert Server requested that alarm of the returned alarm id be silenced
+	case EASAltAlertServerResponseSilence:
+		Observer().ASAltSilenceCurrentAlarm(iAlarmId);
+		break;
+
+	// Clear the current alarm and setup ready for the next pending alarm
+	case EASAltAlertServerResponseClear:
+		Observer().ASAltAcknowledgeAlarm(MASAltAlarmAlertObserver::EAcknowledgeCurrentAlarm, iAlarmId);
+		break;
+
+	// Clears all alarms in the due que
+	case EASAltAlertServerResponseClearAll:
+		Observer().ASAltAcknowledgeAlarm(MASAltAlarmAlertObserver::EAcknowledgeAllAlarms, iAlarmId);
+		break;
+
+	// The Alarm Alert Server requested that all alarms are quiet until the specified time
+	case EASAltAlertServerResponseQuietPeriod:
+		{
+		iRequestQuietPeriodEnd->RequestQuietPeriodEnd();
+		}
+		break;
+
+	// The Alarm Alert Server requested that sound playing is paused until 
+	// the specified time. When requested, we also need to reset the cycle
+	// count back to zero (since the user requested this snooze, rather 
+	// than it being an automatic one).
+	case EASAltAlertServerResponsePauseSound:
+		Observer().ASAltPauseSoundUntil(iTimeValueFromAlarmAlertServer, iAlarmId);
+		break;
+
+	// The Alarm Alert Server requested that the alarm is snoozed until the specified time
+	case EASAltAlertServerResponseSnooze:
+		Observer().ASAltSnoozeAlarmUntil(iTimeValueFromAlarmAlertServer, iAlarmId);
+		break;
+
+	case KErrServerBusy:
+		// Simply try again
+		break;
+
+	default:
+		__ASSERT_DEBUG(EFalse, ASSrvStaticUtils::Fault(ASSrvStaticUtils::EASSrvFaultInvalidAlarmAlertServerResponse));
+		break;
+		}
+	}
+
+//*************************************************************************************
+void CASAltEventHandler::DoCancel()
+	{
+	if	(Session().Handle() == KNullHandle)
+		{
+		TRequestStatus* status = &iStatus;
+		User::RequestComplete(status, KErrCancel);
+		}
+	else
+		{
+		Session().NotifyOnResponseCancel();
+		}
+	}
+
+
+//
+//
+//
+