williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @internalComponent williamr@2: */ williamr@2: williamr@2: #ifndef __EIKALSUP_H__ williamr@2: #define __EIKALSUP_H__ williamr@2: williamr@2: // System includes williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** Patchable ROM constant for the default number of minutes to snooze. See uikon.iby. williamr@2: @publishedPartner */ williamr@2: IMPORT_C extern const TInt KEikAlarmDefaultSnoozeInMinutes; // default snooze increment in minutes williamr@2: williamr@2: /** @internalComponent */ williamr@2: const TInt KEikUseDefaultAlarmSnoozeIncrement = -1; // Use ROM constant KAlarmDefaultSnoozeInMinutes williamr@2: williamr@2: /** Provides an interface between the alarm server and applications that need to williamr@2: handle expiring alarms. williamr@2: williamr@2: When an alarm has expired, this class handles silencing, acknowledging and snoozing it, williamr@2: and users switching to another application (which causes the alarm to be snoozed for a williamr@2: default period). williamr@2: williamr@2: @publishedPartner williamr@2: @released */ williamr@2: NONSHARABLE_CLASS(CEikAlmControlSupervisor) : public CBase williamr@2: { williamr@2: public: williamr@2: /** The priority of the periodic timer that is used to count down the snooze period. */ williamr@2: enum TPriority williamr@2: { williamr@2: /** The timer's priority. This value is between EPriorityStandard and EPriorityUserInput. */ williamr@2: ESnoozeCountDownPriority = 0x00000001 williamr@2: }; williamr@2: public: //exported API williamr@2: inline TInt PauseSoundMinutes() const; williamr@2: inline TTime QuietPeriodEndTime() const; williamr@2: IMPORT_C void CmdAcknowledgeAlarm(); williamr@2: IMPORT_C void CmdPauseAlarmSoundL(TInt aNumMinutes = KEikUseDefaultAlarmSnoozeIncrement); williamr@2: IMPORT_C void CmdSilenceAlarmSound(); williamr@2: IMPORT_C TBool CmdTaskAwayFromAlarmL(); // use default snooze time williamr@2: IMPORT_C TBool CmdTaskAwayFromAlarmL(TInt aMinutesToSnooze); williamr@2: IMPORT_C TDesC8& AlarmData() const; williamr@2: IMPORT_C void CmdAcknowledgeAllAlarms(); williamr@2: public: // deprecated williamr@2: inline TBool CmdTaskAwayFromAlarm(); // deprecated williamr@2: inline void CmdPauseAlarmSound(TInt aNumMinutes = KEikUseDefaultAlarmSnoozeIncrement); // deprecated williamr@2: public: // internal to Symbian williamr@2: static CEikAlmControlSupervisor* NewLC(MEikServAlarmFactory& aAlarmControlFactory, CEikServAlarmAlertSession* aSession); williamr@2: ~CEikAlmControlSupervisor(); williamr@2: void CancelTimeCountDown(); williamr@2: void SynchronizeCountDownTimer(); williamr@2: void ServiceL(const RMessage2& aMessage); williamr@2: TBool IsVisible() const; williamr@2: TAlarmId AlarmId() const; williamr@2: protected: williamr@2: IMPORT_C virtual void CEikAlmControlSupervisor_Reserved1(); williamr@2: IMPORT_C virtual void CEikAlmControlSupervisor_Reserved2(); williamr@2: private: williamr@2: CEikAlmControlSupervisor(); williamr@2: void ConstructL(MEikServAlarmFactory& aAlarmControl, CEikServAlarmAlertSession* aSession); williamr@2: williamr@2: void StartTimeCountDown(); williamr@2: static TInt CallbackSnoozeDecrement(TAny *aAlarmAlert); williamr@2: void DecrementSnoozeMinutes(); williamr@2: void SetAlertState(TInt aAlarmServerStateFlags); williamr@2: void StartPlayAlarmL(const RMessage2& aMessage); williamr@2: void StopPlayAlarm(); williamr@2: williamr@2: TTime ReturnTimeToSnooze(TInt aMinutesToSnooze); williamr@2: void UpdateAlarmInfoL(const RMessage2& aMessage); williamr@2: void SetVisibility(TBool aVisible); williamr@2: private: williamr@2: CPeriodic* iMinuteCountDown; williamr@2: TInt iPauseSoundMinutes; williamr@2: TTime iPauseSoundDueTime; williamr@2: williamr@2: HBufC8* iAlarmData; williamr@2: TBool iVisible; williamr@2: CEikServAlarmAlertSession* iSession; williamr@2: TAlarmId iAlarmId; williamr@2: williamr@2: MEikServAlarm* iAlarmAlert; williamr@2: }; williamr@2: williamr@2: /** Gets the number of minutes remaining in the alarm's snooze period, before williamr@2: the alarm is due to expire again. williamr@2: williamr@2: @return The number of minutes remaining in the alarm's snooze period. */ williamr@2: inline TInt CEikAlmControlSupervisor::PauseSoundMinutes() const williamr@2: { williamr@2: return(iPauseSoundMinutes); williamr@2: } williamr@2: williamr@2: /** Gets the end time for the alarm server's quiet period. williamr@2: williamr@2: During a quiet period, any alarms that are due to expire are williamr@2: deferred until the quiet period is over. Not all UIs support williamr@2: this feature. williamr@2: williamr@2: @return The end time for the quiet period (if any). */ williamr@2: inline TTime CEikAlmControlSupervisor::QuietPeriodEndTime() const williamr@2: { williamr@2: return(iSession->QuietPeriodEndTime()); williamr@2: } williamr@2: williamr@2: /** @deprecated williamr@2: williamr@2: Deprecated in 7.0s. Use CEikAlmControlSupervisor::CmdPauseAlarmSoundL() instead williamr@2: because RMessage::WriteL() could leave. */ williamr@2: inline void CEikAlmControlSupervisor::CmdPauseAlarmSound(TInt aNumMinutes) williamr@2: { CmdPauseAlarmSoundL(aNumMinutes); } williamr@2: williamr@2: /** @deprecated williamr@2: williamr@2: Deprecated in 7.0s. Use CEikAlmControlSupervisor::CmdTaskAwayFromAlarmL() instead williamr@2: because RMessage::WriteL() could leave. */ williamr@2: inline TBool CEikAlmControlSupervisor::CmdTaskAwayFromAlarm() williamr@2: { return CmdTaskAwayFromAlarmL(); } williamr@2: williamr@2: #endif // __EIKALSUP_H__