diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/irqsystemeventhandler/src/iralarmobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtinternetradio/irqsystemeventhandler/src/iralarmobserver.cpp Fri May 14 15:43:29 2010 +0300 @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2006-2007 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 "iralarmobserver.h" +#include "iralarmobserverinterface.h" + +CIRAlarmObserver* CIRAlarmObserver::NewL(MIRAlarmObserverInterface* aObserver) +{ + + CIRAlarmObserver* self = CIRAlarmObserver::NewLC(aObserver); + CleanupStack::Pop(self); + return self; +} + + +CIRAlarmObserver* CIRAlarmObserver::NewLC(MIRAlarmObserverInterface* aObserver) +{ + CIRAlarmObserver* self = new (ELeave) CIRAlarmObserver; + CleanupStack::PushL(self); + self->ConstructL(aObserver); + return self; +} + + +CIRAlarmObserver::~CIRAlarmObserver() +{ + Cancel(); + iAlarmSession.Close(); +} + + +void CIRAlarmObserver::Start() +{ + if (!IsActive()) + { + iAlarmSession.NotifyChange(iStatus, iAlarmId); + SetActive(); + } +} + + +void CIRAlarmObserver::RunL() +{ + if (EAlarmChangeEventSoundPlaying == iStatus.Int()) + { + if( iObserver ) + { + iObserver->alarmStarted(); + } + } + else if (EAlarmChangeEventSoundStopped == iStatus.Int()) + { + if( iObserver ) + { + iObserver->alarmStopped(); + } + } + + Start(); +} + + +void CIRAlarmObserver::DoCancel() +{ + if (IsActive()) + { + iAlarmSession.NotifyChangeCancel(); + } +} + + +TInt CIRAlarmObserver::RunError(TInt aError) +{ + return aError; +} + + +void CIRAlarmObserver::ConstructL(MIRAlarmObserverInterface* aObserver) +{ + iObserver = aObserver; + User::LeaveIfError(iAlarmSession.Connect()); + CActiveScheduler::Add(this); +} + + +CIRAlarmObserver::CIRAlarmObserver() : + CActive(CActive::EPriorityStandard) +{ + +} +