buildverification/smoketest/Timew/Src/SM_ALM.CPP
changeset 15 5b5908ec640f
parent 13 3a35f7917fa6
child 17 03d9ade4748d
--- a/buildverification/smoketest/Timew/Src/SM_ALM.CPP	Thu May 27 12:52:45 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,489 +0,0 @@
-// Copyright (c) 1997-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 "almmod.h"
-#include "sm_std.h"
-#include <ecom/ecom.h>
-
-//
-//	class CAlmModel
-//
-
-CAlmModel::CAlmModel()
-//
-//	Constructor
-//
-	{
-	}
-
-CAlmModel::~CAlmModel()
-//
-//	Destructor
-//
-	{
-	Stop();
-	iClockAlarms.ResetAndDestroy();
-	iClockAlarms.Close();
-	iReviewAlarmIds.Close();
-	iNextAlarmIds.Close();
-	iAlmSvr.Close();
- 	REComSession::FinalClose();
-	}
-
-void CAlmModel::ConstructL(MTimewModelObserver* aObserver,TInt aResponderPriority)
-//
-//	Construct the alarm engine components
-//
-	{
-	SetTimewModelObserver(aObserver);
-	//
-	iReviewAlarmIds = RArray<TAlarmId>(KArrayOfAlarmIdsGranularity);
-	iNextAlarmIds = RArray<TAlarmId>(KArrayOfAlarmIdsGranularity);
-	//
-	const TInt r = iAlmSvr.Connect();
-	User::LeaveIfError(r);
-	//
-	TInt i;
-	iClockAlarms = RPointerArray<TASShdAlarm>(KMaxClockAlarms);
-	for(i=0; i<KMaxClockAlarms; i++)
-		{
-		TASShdAlarm* blankAlarm = new(ELeave) TASShdAlarm();
-		CleanupStack::PushL(blankAlarm);
-		User::LeaveIfError(iClockAlarms.Append(blankAlarm));
-		CleanupStack::Pop(blankAlarm);
-		}
-
-	// Identify any clock alarms in the alarm server and put them
-	// into the slots.
-
-	// Fetch
-	RArray<TAlarmId> clockIds(KMaxClockAlarms);
-	CleanupClosePushL(clockIds);
-	iAlmSvr.GetAlarmIdListForCategoryL(KASCliCategoryClock, clockIds);
-
-	// Put them in the slots - we can only display KMaxClockAlarms alarms
-	// so any beyond that are ignored.
-	TInt slotsUsedSoFar = 0;
-	const TInt count = Min(KMaxClockAlarms, clockIds.Count());
-	for(i=0; i<count; i++)
-		{
-		TASShdAlarm* alarm = iClockAlarms[slotsUsedSoFar];
-		User::LeaveIfError(iAlmSvr.GetAlarmDetails(clockIds[i], *alarm));
-
-		// Only show alarms which haven't yet notified
-		if	(alarm->State() != EAlarmStateNotified)
-			{
-			// If we don't do this, then the alarm slot is treated
-			// as available.
-			++slotsUsedSoFar;
-			alarm->ClientFlags().Set(EClockAlarmFlagsIsSet);
-			}
-		}
-	CleanupStack::PopAndDestroy(&clockIds);
-	//
-	CAlmResponder* pR=new(ELeave) CAlmResponder(iAlmSvr,*this,aResponderPriority);
-	SetResponderActive(pR);
-	}
-
-CAlmModel* CAlmModel::NewL(MTimewModelObserver* aObserver,TInt aResponderPriority)
-//
-//	Create a new alarm engine
-//
-	{
-	CAlmModel* model=new(ELeave) CAlmModel;
-	CleanupStack::PushL(model);
-	model->ConstructL(aObserver,aResponderPriority);
-	CleanupStack::Pop(model);
-	return(model);
-	}
-
-void CAlmModel::ProcessResponder(TInt aStatus)
-//
-//	Interpret responder status
-//
-	{
-	// FIX
-	if (aStatus!=KErrCancel && aStatus!=KErrNone)
-		Notify(aStatus);
-	else
-		Notify(0);
-	}
-
-TInt CAlmModel::AlarmQuietPeriodMinutes() const
-//
-//	Return the time that sound is delayed until
-//
-	{
-	TTime timeNow;
-	timeNow.HomeTime();
-	TTime timeQuiet=AlarmQuietPeriodEnd();
-	TInt quietMinutes;
-	if (timeQuiet<=timeNow || timeQuiet==Time::NullTTime())
-		quietMinutes=0;
-	else
-		{
-		TTimeIntervalMinutes minutes;
-		timeQuiet.MinutesFrom(timeNow,minutes);
-		quietMinutes=minutes.Int()+1;
-		}
-	return(quietMinutes);
-	}
-
-TInt CAlmModel::AlarmQuietPeriodSet(TInt aMinutes)
-//
-//	Delay alarm sounds for a given number of minutes
-//
-	{
-	TInt ret = KErrNone;
-	//
-	if	(!aMinutes)
-		ret = iAlmSvr.CancelAlarmSilence();
-	else
-		ret = iAlmSvr.SetAlarmSoundsSilentFor(TTimeIntervalMinutes(aMinutes));
-	//
-	return ret;
-	}
-
-TInt CAlmModel::ClockAlarmEnable(TInt aAlarmIndex, TTimeWClockAlarmState aClockAlarmState)
-//
-//	Enable or disable a clock alarm
-//
-	{
-	__ASSERT_DEBUG(aAlarmIndex < KMaxClockAlarms, Panic(EModelOutOfRange));
-	//
-	TAlarmStatus newStatus;
-	switch(aClockAlarmState)
-		{
-	case ETimeWClockAlarmStateNotSet:
-		return ClockAlarmDelete(aAlarmIndex);
-
-	case ETimeWClockAlarmStateSet:
-		newStatus = EAlarmStatusEnabled;
-		break;
-
-	default:
-	case ETimeWClockAlarmStateDisabled:
-		newStatus = EAlarmStatusDisabled;
-		break;
-		}
-
-	TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
-	__ASSERT_ALWAYS(alarm->Id() != KNullAlarmId, Fault(EModelfTryingToChangeStateOfNullClockAlarm));
-	TInt error = iAlmSvr.SetAlarmStatus(alarm->Id(), newStatus);
-	if	(error != KErrNone)
-		return error;
-
-	// Refetch alarm from server (will update status)
-	error = iAlmSvr.GetAlarmDetails(alarm->Id(), *alarm);
-	if	(error == KErrNone)
-		alarm->ClientFlags().Set(EClockAlarmFlagsIsSet);
-	return error;
-	}
-
-TInt CAlmModel::ClockAlarmSet(TInt aAlarmIndex, const TASShdAlarm& aInfo)
-//
-//	Set a clock alarm
-//
-	{
-	__ASSERT_DEBUG(aAlarmIndex < KMaxClockAlarms, Panic(EModelOutOfRange));
-	//
-	TInt error = KErrNone;
-	TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
-	if	(alarm->Id() != KNullAlarmId)
-		{
-		// There is already an alarm set in this slot. Delete
-		// the old, replace it with the new.
-		error = iAlmSvr.AlarmDelete(alarm->Id());
-		if	(error != KErrNone)
-			return error;
-		alarm->ClientFlags().Clear(EClockAlarmFlagsIsSet);
-		}
-
-	// Add alarm (will also update cached alarm details)
-	*alarm = aInfo;
-	alarm->Category() = KASCliCategoryClock;
-	error = iAlmSvr.AlarmAdd(*alarm);
-	if	(error == KErrNone)
-		alarm->ClientFlags().Set(EClockAlarmFlagsIsSet);
-	return error;
-	}
-
-TInt CAlmModel::ClockAlarmInfo(TInt aAlarmIndex,TASShdAlarm& aInfo)
-//
-//	Get information about a clock alarm
-//
-	{
-	__ASSERT_DEBUG(aAlarmIndex < KMaxClockAlarms, Panic(EModelOutOfRange));
-	//
-	TInt error = KErrNone;
-	aInfo = *(iClockAlarms[aAlarmIndex]);
-	if	(aInfo.Id() != KNullAlarmId && aInfo.ClientFlags().IsSet(EClockAlarmFlagsIsSet))
-		{
-		// Preserve flags
-		const TBitFlags16 flags = aInfo.ClientFlags();
-
-		// Fetch alarm details
-		error = iAlmSvr.GetAlarmDetails(aInfo.Id(), aInfo);
-
-		// Restore flags
-		if	(error == KErrNone)
-			{
-			// Has the alarm already notified?
-			if	(aInfo.State() != EAlarmStateQueued && aInfo.State() != EAlarmStateNotifying)
-				{
-				// Treat this slot as free
-				TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
-				alarm->Reset();
-				aInfo = *alarm;
-				}
-			else
-				aInfo.ClientFlags() = flags;
-			}
-		else if (error == KErrNotFound)
-			{
-			// Alarm has been deleted
-			TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
-			alarm->Reset();
-			aInfo = *alarm;
-			}
-		}
-	return error;
-	}
-
-TInt CAlmModel::ClockAlarmDelete(TInt aClockAlarmNum)
-	{
-	__ASSERT_DEBUG(aClockAlarmNum < KMaxClockAlarms, Panic(EModelOutOfRange));
-	TASShdAlarm* alarm = iClockAlarms[aClockAlarmNum];
-	__ASSERT_ALWAYS(alarm->Id() != KNullAlarmId, Fault(EModelfTryingToChangeStateOfNullClockAlarm));
-	const TInt error = iAlmSvr.AlarmDelete(alarm->Id());
-	if	(error == KErrNone || error == KErrNotFound)
-		{
-		// Update cached representation of deleted alarm
-		alarm->Reset();
-		}
-	return error;
-	}
-
-TTimeWClockAlarmState CAlmModel::ClockAlarmState(TInt aClockAlarmNum) const
-	{
-	__ASSERT_DEBUG(aClockAlarmNum < KMaxClockAlarms, Panic(EModelOutOfRange));
-	//
-	const TASShdAlarm* alarm = iClockAlarms[aClockAlarmNum];
-	if	(alarm->ClientFlags().IsSet(EClockAlarmFlagsIsSet))
-		{
-		switch(alarm->Status())
-			{
-		case EAlarmStatusEnabled:
-			return ETimeWClockAlarmStateSet;
-		case EAlarmStatusDisabled:
-			return ETimeWClockAlarmStateDisabled;
-			}
-		}
-	return ETimeWClockAlarmStateNotSet;
-	}
-
-void CAlmModel::NextAlarmResetListL()
-//
-//	Fetch a list of ids of all the alarms that are pending
-//	within the alarm server.
-//
-	{
-	iAlmSvr.GetAlarmIdListByStateL(EAlarmStateQueued, iNextAlarmIds);
-	}
-
-void CAlmModel::NextAlarmClearList()
-	{
-	iNextAlarmIds.Reset();
-	}
-
-TInt CAlmModel::NextAlarmNumber() const
-	{
-	return iAlmSvr.NumberOfAlarmsActiveInQueue();
-	}
-
-TInt CAlmModel::NextAlarmDelete(TInt aIndex)
-//
-//	Delete one of the next alarms
-//
-	{
-	TInt ret = KErrNotFound;
-	if	(aIndex < iNextAlarmIds.Count())
-		{
-		const TAlarmId id = iNextAlarmIds[aIndex];
-		ret = iAlmSvr.AlarmDelete(id);
-		}
-	return ret;
-	}
-
-TBool CAlmModel::NextAlarmCanDelete(TInt aIndex) const
-//
-//	Determine whether can delete the specified alarm.
-//
-	{
-	__ASSERT_DEBUG(aIndex < iNextAlarmIds.Count(), Panic(EModelOutOfRange));
-	//
-	const TAlarmId id = iNextAlarmIds[aIndex];
-	//
-	TASShdAlarm alarm;
-	if	(iAlmSvr.GetAlarmDetails(id, alarm) == KErrNone)
-		{
-		return (
-			alarm.Category() == KASCliCategoryClock ||
-			alarm.State() == EAlarmStateSnoozed ||
-			!alarm.HasOwningSession()
-			);
-		}
-	return EFalse;
-	}
-
-TInt CAlmModel::NextAlarm(TFullName& aOwner, TASShdAlarm& aInfo) const
-//
-//	Get information about the next alarm
-//
-	{
-	aOwner = KNullDesC;
-	//
-	TAlarmId id = KNullAlarmId;
-	TInt ret = iAlmSvr.GetNextDueAlarmId(id);
-	if	(ret == KErrNone)
-		{
-		if	(id == KNullAlarmId)
-			{
-			aInfo.Reset();
-			ret = KErrNotFound;
-			}
-		else
-			{
-			ret = iAlmSvr.GetAlarmDetails(id, aInfo);
-			if	(ret == KErrNone)
-				ret = iAlmSvr.GetAlarmOwner(id, aOwner);
-			}
-		}
-	return ret;
-	}
-
-TInt CAlmModel::NextAlarmInfo(TInt aIndex, TFullName& aOwner, TASShdAlarm& aInfo) const
-//
-//	Get info about the next alarm
-//
-	{
-	TInt ret = KErrNotFound;
-	if	(aIndex < iNextAlarmIds.Count())
-		{
-		const TAlarmId id = iNextAlarmIds[aIndex];
-		ret = iAlmSvr.GetAlarmDetails(id, aInfo);
-		if	(ret == KErrNone)
-			{
-			ret = iAlmSvr.GetAlarmOwner(id, aOwner);
-			}
-		}
-	return ret;
-	}
-
-void CAlmModel::ReviewAlarmResetListL()
-	{
-	iAlmSvr.GetAlarmIdListByStateL(EAlarmStateNotified, iReviewAlarmIds);
-	}
-
-void CAlmModel::ReviewAlarmClearList()
-	{
-	iReviewAlarmIds.Reset();
-	}
-
-TInt CAlmModel::ReviewAlarmNumber() const
-	{
-	return iAlmSvr.AlarmCountByState(EAlarmStateNotified);
-	}
-
-TInt CAlmModel::ReviewAlarmInfo(TInt aIndex, TASShdAlarm& aInfo) const
-//
-//	Get information about a past alarm
-//
-	{
-	TInt ret = KErrNotFound;
-	if	(aIndex < iReviewAlarmIds.Count())
-		{
-		const TAlarmId id = iReviewAlarmIds[aIndex];
-		ret = iAlmSvr.GetAlarmDetails(id, aInfo);
-		}
-	return ret;
-	}
-
-void CAlmModel::AlarmSoundToggle()
-	{
-	TTimeWAlarmSoundState soundState = AlarmSoundState();
-	if	(soundState == ETimeWAlarmSoundOn)
-		AlarmSoundStateSet(EFalse);
-	else
-		AlarmSoundStateSet(ETrue);
-	}
-
-TInt CAlmModel::AlarmSoundStateSet(TBool aSoundOn)
-	{
-	TAlarmGlobalSoundState state = EAlarmGlobalSoundStateOn;
-	if	(!aSoundOn)
-		state = EAlarmGlobalSoundStateOff;
-
-	return iAlmSvr.SetAlarmSoundState(state);
-	}
-
-TTimeWAlarmSoundState CAlmModel::AlarmSoundState() const
-	{
-	// First check whether we're in a silent period
-	if	(iAlmSvr.AlarmSoundsTemporarilySilenced())
-		return ETimeWAlarmQuietPeriod;
-
-	// We're not, so check global sound state and map
-	// to TimeW settings
-	TAlarmGlobalSoundState state = EAlarmGlobalSoundStateOff;
-	if	(iAlmSvr.GetAlarmSoundState(state) == KErrNone)
-		{
-		if	(state == EAlarmGlobalSoundStateOn)
-			return ETimeWAlarmSoundOn;
-		}
-	return ETimeWAlarmSoundOff;
-	}
-
-TTime CAlmModel::AlarmQuietPeriodEnd() const
-	{
-	TTime endTime;
-	if	(iAlmSvr.GetAlarmSoundsSilentUntil(endTime) == KErrNone)
-		return endTime;
-	//
-	endTime.HomeTime();
-	return endTime;
-	}
-
-TInt CAlmModel::OrphanAlarmNumber() const
-	{
-	// Get the alarms
-	RArray<TAlarmId> clockIds(KMaxClockAlarms);
-	CleanupClosePushL(clockIds);
-	iAlmSvr.GetAlarmIdListForCategoryL(KASCliCategoryClock, clockIds);
-
-	//which are orphaned?
-	TInt count = clockIds.Count();
-	TInt orphaned = 0;
-	for	(TInt ii=0; ii<count; ii++)
-		{
-		TASShdAlarm alarm;
-		iAlmSvr.GetAlarmDetails(clockIds[ii], alarm);
-		if	(alarm.HasBecomeOrphaned())
-			orphaned++;
-		}
-	CleanupStack::PopAndDestroy(&clockIds);
-
-	return orphaned;
-	}