diff -r 000000000000 -r f979ecb2b13e alarmui/inc/alarmutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/alarmui/inc/alarmutils.h Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,792 @@ +/* +* Copyright (c) 2007-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: +* +*/ + + + +#ifndef ALARMUTILS_H +#define ALARMUTILS_H + + +// INCLUDES +#include "AlmAlertVariant.hrh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS + +class CCalSession; +class CCalEntryView; +class CAlmAlarmControl; +class CAlmAlarmPlayer; +class CAlmAlarmInfo; +class CAlarmRemConEventsHandler; +#ifdef RD_ALMALERT__SENSOR_SUPPORT +class CAlarmContextFwSupport; +#endif // RD_ALMALERT__SENSOR_SUPPORT +class MProfileEngine; +class CNotifierDialogController; +class CAknAlarmService; + +// CLASS DECLARATION + +/** +* ?description +* +* @lib AknAlarmService.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS( CAlarmUtils ) : public CBase, public MCalProgressCallBack + { +public: // data types + /** + * Alarm types. + */ + enum TAlarmType + { + EAlarmTypeClock = 0, + EAlarmTypeCalendar, + EAlarmTypeOther + }; + + + struct TAlarmData + { + // Alarm snooze time. + TInt iSnoozeTime; + + // Currently active alarm object on the alarm server queue. + TASShdAlarm iAlarm; + + // Name of the alarm tone file. + TFileName iAlarmTone; + + // Name of the default alarm tone file. + TFileName iDefaultAlarmTone; + + // Volume setting. + TInt iVolume; + + // Repeate value for the player. + TInt iRepeatValue; + + // Volume ramp time value for the player. + TInt iVolumeRampTime; + + // Ringing type. + TProfileRingingType iRingType; + + // alarm type. + TAlarmType iAlarmType; + + // instance time (only for calendar alarms) + TCalTime iInstanceTime; + + // local uid (only for calendar alarms) + TCalLocalUid iLocalUid; + + TBufC<256> iCalFileName; + + }; + +public: // Constructors and destructor + // Constructor + static CAlarmUtils* NewL( CAlmAlarmControl* aAlarmControl, + CAknAlarmService* aSupervisor ); + + // Destructor. + ~CAlarmUtils(); + +private: + // C++ default constructor. + CAlarmUtils( CAlmAlarmControl* aAlarmControl, + CAknAlarmService* aSupervisor ); + + // Symbian 2nd phase constructor + void ConstructL(); + +public: + /** + * Plays the alarm sound. + * @since S60 3.2 + */ + void PlayAlarmSound(); + + /** + * Stops the alarm sound. + * @since S60 3.2 + */ + void StopAlarmSound(); + + /** + * Activates and deactivates keyguard. + * @since S60 3.2 + * @param aActive ETrue, to activate keyguard. + */ + void SetKeyGuard(TBool aActive); + + /** + * Checks whether current alarm is a clock alarm. + * @since S60 3.2 + * @return True, if alarm is a clock alarm + */ + TBool IsClockAlarm() const; + + /** + * Check whether current alarm is a calendar alarm. + * @since S60 3.2 + * @return True, if alarm is a calendar alarm + */ + TBool IsCalendarAlarm() const; + + /** + * Checks the current ringing type from Profiles. + * @since S60 3.2 + * @return True, if current ringing type is set to silent + */ + TBool IsRingingTypeSilent() const; + + /** + * Check if using the "Off" tone. (i.e. no_sound.wav or KNullDesC.) + * @since S60 3.2 + * @return ETrue, if iAlarmName is an "off" tone. + */ + TBool IsOffTone() const; + + /** + * Check if the alarm sound file is a KRngMimeType file. + * @since S60 3.2 + * @return ETrue, if the tone is a KRngMimeType file. + */ + TBool IsRngTone(); + + /** + * @since S60 3.2 + * @return The maximum value of profile volume. + */ + TInt MaxProfileVolume() const; + + /** + * @since S60 3.2 + * @return Reference to the iAlarmData struct. + **/ + CAlarmUtils::TAlarmData& AlarmData(); + + /** + * Initialise the TAlarmData struct and + * get alarm informations string(s). + * @since S60 3.2 + */ + void InitialiseAlarmDataL(); + + /** + * Cleanup. + * @since S60 3.2 + */ + void UninitialiseAlarmData(); + + /** + * Checks whether active alarm can be snoozed or not. + * @since S60 3.2 + * @return True, if the alarm can be snoozed + */ + TBool CanSnooze() const; + + /** + * Check whether we are in restore mode or not. + * @since S60 3.2 + * @return ETrue if phone is in restore mode and EFalse if not + **/ + TBool IsPhoneInRestoreMode() const; + + /** + * Gets text and time values for an alarm note. + * @since S60 3.2 + * @param aText Buffer to receive the text. + **/ + void GetAlarmLabelL(HBufC*& aText); + + /** + * Gets the label for wakeup note. + * @since S60 3.2 + * @param aLabel Buffer to receive the text. + **/ + void GetWakeupLabelL(HBufC*& aLabel); + + /** + * ?description + * @since S60 3.2 + * @return Pointer to CNotifierDialogController. + */ + CNotifierDialogController* NotifierDialogController(); + + /** + * Stop the active alarm and reset the snooze count. + * @since S60 3.2 + **/ + void DoStopAlarm(); + + /** + * Access to iHasExpiredAlarmsWaiting. + * @since S60 3.2 + * @return ETrue if there are alarms waiting to be shown. + **/ + TBool HasExpiredAlarmsWaiting() const; + + /** + * Snooze the active alarm. + * @since S60 3.2 + **/ + void DoSnooze(); + + /** + * Checks if this alarm can be shown in "alarm" or in "charging" state. + * @since S60 3.2 + * @return ETrue, if alarm can be shown. + */ + TBool IsWakeupAlarm() const; + + /** + * Checks if the device is in "alarm" or in "charging" state. + * @since S60 3.2 + * @return ETrue, if device is in "alarm" or in "charging" state. + */ + TBool IsDeviceInAlarmState() const; + + /** + * Checks if the device is in any of the normal states. + * @since S60 3.2 + * @return ETrue, if device is in any of the normal states. + */ + TBool IsDeviceInNormalState() const; + + /** + * Check that phone is in correct state (startup finished). + * @since S60 3.2 + * @return ETrue, if startup state is one of the final states. + */ + TBool IsPhoneStartupReady() const; + + /** + * Store current device state. + * @since S60 3.2 + * @param aDeviveState Current device state. + */ + void SetDeviceState(TPSGlobalSystemState aDeviceState); + + /** + * Boot up the device. + * @since S60 3.2 + **/ + void DeviceStartup(); + + /** + * Starts shutdown timer. + * @since S60 3.2 + */ + void StartShutdownTimer(TUint aTimeout); + + /** + * Cancel the shutdown timer. + * @since S60 3.2 + */ + void CancelShutdown(); + + /** + * Starts auto-snooze timer. + * @since S60 3.2 + */ + void StartAutoSnoozeTimer(); + + /** + * Cancel the auto snooze timer. + * @since S60 3.2 + */ + void CancelAutoSnooze(); + + /** + * Start observing accessory events. + * @since S60 3.2 + */ + void StartAccessoryObserver(); + + /** + * Stop observing accessory events. + * @since S60 3.2 + */ + void StopAccessoryObserver(); + + /** + * Start observing context framework/sensors. + * @since S60 3.2 + */ + void StartCFObserverL(); + + /** + * Stop observing context framework/sensors. + * @since S60 3.2 + */ + void StopCFObserverL(); + + /** + * Try to snoozes the active alarm. + * Stop if max snooze count reached. + * @since S60 3.2 + */ + void TryToSnoozeActiveAlarm(); + + /** + * Start the key block timer. + * @since S60 3.2 + */ + void StartKeyBlocker(); + + /** + * Is the kay block timer active. + * @since S60 3.2 + */ + TBool KeyBlockActive(); + + /** + * Show the snooze info note. + * @since S60 3.2 + */ + void AsyncShowSnoozeInfoNote(); + + /** + * Show the wakeup query. + * @since S60 3.2 + */ + void AsyncShowWakeupQuery(); + + /** + * Cancel iAsyncCallBack. + * @since S60 3.2 + */ + void CancelAsynchRequest(); + + /** + * Start alarm delay timer. + * @since S60 3.2 + */ + void StartAlarmDelayTimer(); + + /** + * Is delay timer active. + * @since S60 3.2 + * @return ETrue, if delay timer is active. + */ + TBool AlarmDelayTimerActive(); + + /** + * Reset system inactivity timers periodically. + * @since S60 3.2 + */ + void StartInactivityResetTimer(); + + /** + * Stop the inactivity reset timer. + * @since S60 3.2 + */ + void StopInactivityResetTimer(); + + /** + * Fetch local uid and instance time for the alarmed calendar entry. + * @since S60 3.2 + */ + void GetCalendarEntryInfoL(); + + /** + * Gets the calendar entry we are currently alarming. + * @since 3.2 + */ + void FetchEntryL(CCalEntry*& aEntry); + + /** + * From MCalProgressCallBack.Notifies the progress percentage of completion of + * calendar entry view creation + * @since 5.0 + */ + + void Progress(TInt aPercentageCompleted); + + /** + * From MCalProgressCallBack . Called on completion of calendar entry view creation + * @since 5.0 + */ + + void Completed(TInt aError); + + /** + * From MCalProgressCallBack . Called on compltetion of calendar entry view creation + * @since 5.0 + */ + TBool NotifyProgress(); + + /** + * Start calendar viewer in alarm mode. + * @since S60 5.0 + */ + void StartCalendarL(); + + /** + * Check the security lock status. + * @since S60 5.0 + * @return ETrue if security lock is active. + */ + TBool IsSecurityLockActive(); + + /** + * Activate and deactivate backlight. + * @since S60 3.2 + * @param aActive ETrue, to set background light blinking. + */ + void SetBackLight(TBool aActive); + + /** + * Set the flag for calendar viewer is open. + * @param aCalendaralarmViewer ETrue, for calendar viewer. + */ + void SetCalendarAlarmViewer(TBool aCalendarAlarmViewer); + + /** + * Get the status whether, calendar viewer is open or not + * @return ETrue if viewer is open. + */ + TBool IsCalendarAlarmViewer(); + +private: + + /** + * Read alarm sound filenames from CenRep. + * @since S60 3.2 + */ + void GetAlarmSoundFilenames(); + + /** + * Read active profile settings from the profile engine. + * @since S60 3.2 + */ + void GetProfileSettings(); + + /** + * Read the user snooze time setting for the active alarm. + * @since S60 3.2 + */ + void GetSnoozeTimeSetting(); + + /** + * Check if the alarm server has more expired alarms to ready to be shown. + * @since S60 3.2 + * @return ETrue, if any alarms in EAlarmStateWaitingToNotify state. + */ + TBool CheckHasExpiredAlarmsWaiting(); + + /** + * Update alarm snooze counter. + * @since S60 3.2 + */ + void UpdateAlarmSnoozeCount(); + + /** + * request device shutdown. + * @since S60 3.2 + */ + void DeviceShutdown(); + + /** + * Connect to starter client. + * @since S60 3.2 + * @return ETrue, if connection was successfull. + **/ + TBool StarterConnect(); + + /** + * Callback function for the shutdown timer. + * @since S60 3.2 + * @param aPtr Reference to parent object + * @return 0 + */ + static TInt ShutdownCallBack(TAny* aPtr); + + /** + * Callback function for the auto snooze timer. + * @since S60 3.2 + * @param aPtr Reference to parent object + * @return 0 + */ + static TInt AutoSnoozeCallBack(TAny* aPtr); + + /** + * Callback function for the inactivity reset timer. + * @since S60 3.2 + * @param aPtr Not used. + * @return 1 + */ + static TInt InactivityResetTimerCallBack(TAny* aPtr); + + /** + * Call CAlmAlarmControl::DoAutoSnooze to handle the auto snooze. + * @since S60 3.2 + */ + void AutoSnooze(); + + /** + * Stop the key block timer. + * @since S60 3.2 + */ + void StopKeyBlocker() const; + + /** + * Callback for the key block timer. + * @since S60 3.2 + * @param aPtr Pointer to iKeyBlockTimer + * @return 0 + */ + static TInt KeyBlockCallBack(TAny* aPtr); + + /** + * Callback for the auto snooze timer. + * @since S60 3.2 + * @param aPtr Pointer to iAlarmControl + * @return 0 + */ + static TInt SnoozeInfoCallBack(TAny* aPtr); + + /** + * Request wakeup dialog. Shutdown on error. + * @since S60 3.2 + */ + void DoAskWakeup(); + + /** + * ?description + * @since S60 3.2 + * @param aPtr Pointer to this class. + * @return 0 + */ + static TInt WakeupCallBack(TAny* aPtr); + + /** + * Callback for alarm delay timer. + * @since S60 3.2 + */ + static TInt DelayTimerCallBack(TAny* aPtr); + + /** + * Sets the Calendar view creation status. + * @since S60 5.0 + */ + + void SetCalendarViewStatus(TInt); + + /** + * Gets the Calendar view creation status. + * @since S60 5.0 + */ + + TInt CalendarViewStatus(); + +private: // data + /** + * Pointer to the alarm control. + * Not own. + */ + CAlmAlarmControl* iAlarmControl; + + /** + * Pointer to our service class to send stop and snooze commands. + * Not own. + */ + CAknAlarmService* iSupervisor; + + /** + * Pointer to global note API. + * Not own. + */ + CNotifierDialogController* iNotifierDialogController; + + /** + * Plays alarm tones according to user settings. + * Own. + */ + CAlmAlarmPlayer* iAlarmPlayer; + + /** + * Pointer to accessory observer. + * Own. + */ + CAlarmRemConEventsHandler* iRemConHandler; + + /** + * Pointer to context framework observer. + * Own. + */ + #ifdef RD_ALMALERT__SENSOR_SUPPORT + CAlarmContextFwSupport* iCFSupport; + #endif // RD_ALMALERT__SENSOR_SUPPORT + + /** + * Class to fetch the text for alarm UI. + * Own. + */ + CAlmAlarmInfo* iAlarmInfo; + + /** + * Alarm server client session. + */ + RASCliSession iAlarmServer; + + /** + * Starter client session. + */ + RStarterSession iStarter; + + /** + * For tone MIME -type. + */ + RApaLsSession iApaSession; + + /** + * Access to active profile settings. + * Own. + */ + MProfileEngine* iProfileEng; + + /** + * Current device state. + */ + TPSGlobalSystemState iCurrentDeviceState; + + /** + * Timer to allow actions to complete before device is shutdown. + * Own. + */ + CPeriodic* iShutdownTimer; + + /** + * Timer for auto-snooze. + * Own, + */ + CPeriodic* iAutoSnoozeTimer; + + /** + * Timer to ignore all input for 0.5 sec. + * Own. + */ + CPeriodic* iKeyBlockTimer; + + /** + * Timer to delay the alarm. Prevents alarm from quickly + * flashing on the screen on system time change. + * Own. + */ + CPeriodic* iAlarmDelayTimer; + + /** + * Timer to keep screen saver, autolock, etc. from + * activating during an alarm. + * Own. + */ + CPeriodic* iInactivityResetTimer; + + /** + * Asynchronous callback to display the wakeup query and snooze info notes. + * (to ease up state handling and to resolve problems when requesting + * a new note from inside a NoteComplete call...) + * Own. + */ + CAsyncCallBack* iAsyncCallBack; + + /** + * Alarm data. + */ + CAlarmUtils::TAlarmData iAlarmData; + + /** + * Flag to check whether it's OK to show the wakeup query. + */ + TBool iHasExpiredAlarmsWaiting; + + /** + * Flag to prevent unnecessary setting of background lights. + */ + TBool iLightsBlinking; + + /** + * Flag to prevent unnecessary setting of keyguard. + */ + TBool iKeyGuardActivated; + + /** + * Pointer to calendar session. + * Own. Remember to release after use! + */ + + CCalSession* iCalSession; + + /** + * Pointer to calendar entry view. + * Own. Remember to release after use! + */ + + CCalEntryView* iCalEntryView; + + /** + * Pointer to CActiveSchedulerWait object which is entry view. + * Own. Remember to release after use! + */ + CActiveSchedulerWait* iEntryAsyncWait; + + /** + * Pointer to CActiveSchedulerWait object to wait for completion of current view creation request. + * Own. Remember to release after use! + */ + + CActiveSchedulerWait* iQueueManagerAsw; + + /** + * Calendar entry view creation status. + */ +enum TCalViewCreateStatus + { + ECalViewCreateError = -1, + ECalViewCreateNone = 0, + ECalViewCreateReqPending, + ECalViewCreateCompleted + }; + + TInt iCalEntryViewStatus; + + /** + * Calendar Alarm Viewer flag + */ + TBool iCalendarAlarmViewer; + }; + +#endif // ALARMUTILS_H + + +// End of File