diff -r 5d7fec11a5ce -r 03d9ade4748d buildverification/autosmoketest/Timew/Src/SM_ALM.CPP --- a/buildverification/autosmoketest/Timew/Src/SM_ALM.CPP Fri Jun 11 16:24:17 2010 +0100 +++ /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 - -// -// 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(KArrayOfAlarmIdsGranularity); - iNextAlarmIds = RArray(KArrayOfAlarmIdsGranularity); - // - const TInt r = iAlmSvr.Connect(); - User::LeaveIfError(r); - // - TInt i; - iClockAlarms = RPointerArray(KMaxClockAlarms); - for(i=0; i 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; iState() != 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 clockIds(KMaxClockAlarms); - CleanupClosePushL(clockIds); - iAlmSvr.GetAlarmIdListForCategoryL(KASCliCategoryClock, clockIds); - - //which are orphaned? - TInt count = clockIds.Count(); - TInt orphaned = 0; - for (TInt ii=0; ii