diff -r 000000000000 -r 2e3d3ce01487 commonappservices/alarmserver/AlarmAlert/Source/ASAltEventHandler.cpp --- /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 +#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(); + } + } + + +// +// +// +