epoc32/include/mw/asshdalarm.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __ASSHDALARM_H__
williamr@2
    17
#define __ASSHDALARM_H__
williamr@2
    18
williamr@2
    19
williamr@4
    20
// System Includes
williamr@2
    21
#include <e32base.h>
williamr@2
    22
#include <s32strm.h>
williamr@2
    23
williamr@4
    24
// User Includes
williamr@2
    25
#include <asshddefs.h>
williamr@2
    26
williamr@4
    27
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
    28
williamr@4
    29
/**
williamr@4
    30
 * The Alarm publish and subscribe category
williamr@4
    31
 * 
williamr@4
    32
 * @publishedPartner
williamr@4
    33
 * @released
williamr@4
    34
 */
williamr@2
    35
const TUid KAlarmServerPubSubCategory = { 0x101f5027 };
williamr@2
    36
williamr@4
    37
/**
williamr@4
    38
 * Used for subcribing missed alarms or time zone changes
williamr@4
    39
 * @publishedPartner
williamr@4
    40
 * @released
williamr@4
    41
 */
williamr@2
    42
const TUint KMissingAlarmPubSubKey = 100;
williamr@2
    43
williamr@4
    44
/**
williamr@4
    45
 * The publish and subscribe data for KMissingAlarmPubSubKey
williamr@4
    46
 * @publishedPartner
williamr@4
    47
 * @released
williamr@4
    48
 */
williamr@2
    49
struct TMissedAlarmPubSubData
williamr@2
    50
	{
williamr@4
    51
	/**
williamr@4
    52
	 * The value indicating the changes.
williamr@4
    53
	 * 1 - Time zone has been changes but there are no missed alarms
williamr@4
    54
	 * 2 - Some alarms have been missed after system time or time zone has changed.
williamr@4
    55
	 */
williamr@2
    56
	TUint8 iValue;
williamr@2
    57
	
williamr@4
    58
	/**
williamr@4
    59
	 * The time that system time change took place, in universal (UTC) time 
williamr@4
    60
	 */
williamr@2
    61
	TTime iTimeOfChangeUtc;
williamr@2
    62
	};
williamr@2
    63
williamr@4
    64
#ifdef SYMBIAN_SKIPPED_CALENDAR_ALARMS
williamr@4
    65
/**
williamr@4
    66
 * Used for subscribing to data used when searching for instances in Calendar
williamr@4
    67
 * @publishedPartner
williamr@4
    68
 * @released
williamr@4
    69
 */
williamr@2
    70
const TUint KSkippedAlarmInstancesPubSubKey = 101;
williamr@2
    71
williamr@4
    72
/**
williamr@4
    73
 * The publish and subscribe data for KMissingAlarmInstancesPubSubKey
williamr@4
    74
 * @publishedPartner
williamr@4
    75
 * @released
williamr@4
    76
 */
williamr@2
    77
struct TASShdAlarmedInstanceParams
williamr@2
    78
	{
williamr@4
    79
	/**
williamr@4
    80
	 * The start of the time range in local time.
williamr@4
    81
	 */ 
williamr@2
    82
	TTime iLocalStartTime;
williamr@2
    83
williamr@4
    84
	/**
williamr@4
    85
	 * The end of the time range in local time.
williamr@4
    86
	 */
williamr@2
    87
	TTime iLocalEndTime;
williamr@2
    88
	
williamr@4
    89
	/**
williamr@4
    90
	 * The alarm time types to include.
williamr@4
    91
	 */
williamr@2
    92
	TASShdAlarmTimeType iTimeType;
williamr@2
    93
	};
williamr@2
    94
williamr@4
    95
#endif //SYMBIAN_SKIPPED_CALENDAR_ALARMS
williamr@4
    96
#endif //SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
    97
williamr@4
    98
williamr@4
    99
#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
williamr@4
   100
williamr@4
   101
/**
williamr@4
   102
 * Used for subcribing wake-up alarm set and unset notifications
williamr@4
   103
 * Belonging to the KAlarmServerPubSubCategory alarm publish and subscribe category
williamr@4
   104
 * 
williamr@4
   105
 * @publishedPartner
williamr@4
   106
 * @released
williamr@4
   107
 */
williamr@4
   108
const TUint KWakeupAlarmPubSubKey = 102;
williamr@4
   109
williamr@4
   110
/**
williamr@4
   111
 * Alarm server sets KWakeupAlarmPubSubKey value to EActiveWakeupAlarmSet when there is an active
williamr@4
   112
 * wakeup alarm in the alarm queue otherwise sets it to EActiveNoWakeupAlarmsSet. 
williamr@4
   113
 * A wakeup alarm starts the device if it is powered off when the alarm expires. If 
williamr@4
   114
 * the device is in normal mode then it works as a clock alarm.      
williamr@4
   115
 * An active wakeup alarm is a wakeup alarm which has been set and has not started to alert yet.
williamr@4
   116
 *  
williamr@4
   117
 * EActiveWakeupAlarmUninitialized is used to notify the listeners of 'KWakeupAlarmPubSubKey' 
williamr@4
   118
 * key that the Alarm Server has just started at the device boot time and it needs to internalize 
williamr@4
   119
 * Alarm Queue from backup before checking for the presence of active wake-up alarm. 
williamr@4
   120
 *  
williamr@4
   121
 * @publishedPartner
williamr@4
   122
 * @released
williamr@4
   123
 */
williamr@4
   124
enum TActiveWakeupAlarmStatus
williamr@4
   125
    {
williamr@4
   126
    EActiveWakeupAlarmUninitialized = 100,
williamr@4
   127
    EActiveWakeupAlarmSet,
williamr@4
   128
    EActiveNoWakeupAlarmsSet,
williamr@4
   129
    };
williamr@4
   130
williamr@4
   131
#endif
williamr@4
   132
williamr@4
   133
/**
williamr@4
   134
 * A client-side alarm object.
williamr@4
   135
 * 
williamr@4
   136
 * It contains all of the information needed to create an alarm in the Alarm Server.
williamr@4
   137
 * 
williamr@4
   138
 * @publishedAll
williamr@4
   139
 * @released
williamr@4
   140
 */
williamr@2
   141
class TASShdAlarm
williamr@2
   142
	{
williamr@4
   143
public:										
williamr@2
   144
williamr@2
   145
	IMPORT_C TASShdAlarm();
williamr@2
   146
williamr@4
   147
public:										
williamr@2
   148
williamr@2
   149
	IMPORT_C void InternalizeL(RReadStream& aStream);
williamr@2
   150
	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
williamr@2
   151
williamr@4
   152
public:								
williamr@4
   153
    // Read-Only Access
williamr@4
   154
    
williamr@4
   155
    /**
williamr@4
   156
     * Returns the alarm status.
williamr@4
   157
     * 
williamr@4
   158
     * @return Alarm status.
williamr@4
   159
     */
williamr@4
   160
	inline TAlarmStatus	Status() const { return iStatus; }
williamr@2
   161
williamr@4
   162
	/**
williamr@4
   163
	 * Returns the alarm state.
williamr@4
   164
	 * 
williamr@4
   165
	 * @return Alarm state.
williamr@4
   166
	 */
williamr@4
   167
	inline TAlarmState State() const { return iState; }
williamr@4
   168
williamr@4
   169
	IMPORT_C TBool HasAssociatedData() const;
williamr@4
   170
	IMPORT_C TBool HasOwningSession() const;
williamr@4
   171
	IMPORT_C TBool HasBecomeOrphaned() const;
williamr@2
   172
	
williamr@4
   173
public:								
williamr@2
   174
williamr@2
   175
	IMPORT_C void Reset();
williamr@2
   176
williamr@4
   177
    /**
williamr@4
   178
     * Returns a writable version of the alarm's unique identifier.
williamr@4
   179
     * 
williamr@4
   180
     * @return Reference to the unique identifier.
williamr@4
   181
     */
williamr@4
   182
	inline TAlarmId& Id() { return iAlarmId; }
williamr@4
   183
williamr@4
   184
	/**
williamr@4
   185
	 * Return the alarm's unique identifier.
williamr@4
   186
	 * 
williamr@4
   187
	 * @return The unique identifier.
williamr@4
   188
	 */
williamr@4
   189
	inline TAlarmId	Id() const { return iAlarmId; }
williamr@4
   190
		
williamr@4
   191
	/**
williamr@4
   192
	 * The Secure ID is only used in the secured platform
williamr@4
   193
	 */ 
williamr@2
   194
	
williamr@4
   195
	// adds a SID to the alarms private field
williamr@4
   196
	inline void SetSid(const TSecureId& aSecureID) {iTASShdAlarmSID = aSecureID;}
williamr@4
   197
	
williamr@4
   198
	//	returns the SID of the alarm's creator
williamr@4
   199
	inline TSecureId GetSid() const {return iTASShdAlarmSID;}
williamr@2
   200
williamr@4
   201
    /**
williamr@4
   202
     * Returns a writable version of the next time the alarm is scheduled to expire.
williamr@4
   203
     * 
williamr@4
   204
     * @return Next expiry time.
williamr@4
   205
     */
williamr@4
   206
	inline TTime& NextDueTime() { return iNextDueTime; }
williamr@2
   207
williamr@4
   208
    /**
williamr@4
   209
     * Returns the next time that the alarm is scheduled to expire.
williamr@4
   210
     * 
williamr@4
   211
     * @return Next expiry time.
williamr@4
   212
     */
williamr@4
   213
	inline const TTime&	NextDueTime() const { return iNextDueTime; }
williamr@2
   214
williamr@4
   215
    /**
williamr@4
   216
     * Returns a writable version of the alarm's original expiry time.
williamr@4
   217
     * 
williamr@4
   218
     * @return Original expiry time.
williamr@4
   219
     */
williamr@4
   220
	inline TTime& OriginalExpiryTime() { return iOriginalExpiryTime; }
williamr@2
   221
williamr@4
   222
    /**
williamr@4
   223
     * Returns the alarm's original expiry time.
williamr@4
   224
     * 
williamr@4
   225
     * The original expiry time is the same as the next due time, unless the alarm
williamr@4
   226
     * has been snoozed. In that case, the original expiry time is the time when
williamr@4
   227
     * the alarm first expired, and the next due time is when it is to re-awaken
williamr@4
   228
     * after the snooze.
williamr@4
   229
     * 
williamr@4
   230
     * @return Original expiry time.
williamr@4
   231
     */
williamr@4
   232
	inline const TTime& OriginalExpiryTime() const { return iOriginalExpiryTime; }
williamr@2
   233
williamr@4
   234
    /**
williamr@4
   235
     * Returns a writable version of the alarm's category.
williamr@4
   236
     * 
williamr@4
   237
     * Clients can use the category to tag each alarm with a specific code. This
williamr@4
   238
     * allows clients to identify all related alarms, such as all alarms associated
williamr@4
   239
     * with a particular application or application engine.
williamr@4
   240
     * 
williamr@4
   241
     * @return Alarm category.
williamr@4
   242
     */
williamr@4
   243
	inline TAlarmCategory& Category() { return iCategory; }
williamr@2
   244
williamr@4
   245
    /**
williamr@4
   246
     * Return this alarm's category.
williamr@4
   247
     * 
williamr@4
   248
     * @return Alarm category.
williamr@4
   249
     */
williamr@4
   250
	inline TAlarmCategory Category() const { return iCategory; }
williamr@2
   251
williamr@4
   252
    /**
williamr@4
   253
     * Returns a writable version of the alarm's characteristics.
williamr@4
   254
     * 
williamr@4
   255
     * @return Alarm characteristics bit flags.
williamr@4
   256
     */
williamr@4
   257
	inline TAlarmCharacteristicsFlags& Characteristics() { return iCharacteristics; }
williamr@2
   258
williamr@4
   259
    /**
williamr@4
   260
     * Returns the alarm's characteristics
williamr@4
   261
     * 
williamr@4
   262
     * @return Alarm characteristics bit flags.
williamr@4
   263
     */
williamr@4
   264
	inline TAlarmCharacteristicsFlags Characteristics() const { return iCharacteristics; }
williamr@2
   265
williamr@4
   266
    /**
williamr@4
   267
     * Returns a writable version of the alarm's repeat definition.
williamr@4
   268
     * 
williamr@4
   269
     * The repeat definition controls the alarm's behaviour after it has expired.
williamr@4
   270
     * For example, you can set the repeat definition so that the server automatically
williamr@4
   271
     * queues the alarm to expire again in exactly 24 hours time.
williamr@4
   272
     * 
williamr@4
   273
     * @return Alarm repeat definition.
williamr@4
   274
     */
williamr@4
   275
	inline TAlarmRepeatDefinition& RepeatDefinition() { return iRepeatDefinition; }
williamr@2
   276
williamr@4
   277
    /**
williamr@4
   278
     * Returns the repeat definition for the alarm.
williamr@4
   279
     * 
williamr@4
   280
     * @return The alarm's repeat definition.
williamr@4
   281
     */
williamr@4
   282
	inline TAlarmRepeatDefinition RepeatDefinition() const { return iRepeatDefinition; }
williamr@2
   283
williamr@4
   284
    /**
williamr@4
   285
     * Returns a writable version of the alarm's message.
williamr@4
   286
     * 
williamr@4
   287
     * The message is usually displayed in the application UI when the alarm expires.
williamr@4
   288
     * 
williamr@4
   289
     * @return Reference to the alarm's associated message.
williamr@4
   290
     */
williamr@4
   291
	inline TAlarmMessage& Message() { return iMessage; }
williamr@2
   292
williamr@4
   293
    /**
williamr@4
   294
     * Returns the alarm's message.
williamr@4
   295
     * 
williamr@4
   296
     * The message is usually displayed in the application UI when the alarm expires.
williamr@4
   297
     * 
williamr@4
   298
     * @return Reference to the alarm's associated message.
williamr@4
   299
     */
williamr@4
   300
	inline const TAlarmMessage& Message() const { return iMessage; }
williamr@2
   301
williamr@4
   302
    /**
williamr@4
   303
     * Return a writable version of the alarm sound's filename.
williamr@4
   304
     * 
williamr@4
   305
     * @return Reference to the alarm's sound filename.
williamr@4
   306
     */
williamr@4
   307
	inline TAlarmSoundName& SoundName() { return iSoundName; }
williamr@2
   308
williamr@4
   309
    /**
williamr@4
   310
     * Returns the alarm's sound filename.
williamr@4
   311
     * 
williamr@4
   312
     * @return Sound filename.
williamr@4
   313
     */
williamr@4
   314
	inline const TAlarmSoundName& SoundName() const { return iSoundName; }
williamr@2
   315
williamr@4
   316
    /**
williamr@4
   317
     * Returns the alarm session type.
williamr@4
   318
     * 
williamr@4
   319
     * @return Alarm session type.
williamr@4
   320
     */
williamr@4
   321
	inline TAlarmDayOrTimed DayOrTimed() const { return iDayOrTimed; }
williamr@2
   322
williamr@4
   323
    /**
williamr@4
   324
     * Returns a writable version of the alarm type, i.e. day, timed
williamr@4
   325
     * 
williamr@4
   326
     * @return iDayOrTimed.
williamr@4
   327
     */ 
williamr@4
   328
	inline TAlarmDayOrTimed& DayOrTimed() { return iDayOrTimed; }
williamr@2
   329
   
williamr@2
   330
	IMPORT_C void SetUtcNextDueTime(TTime aUtcTime);
williamr@2
   331
	IMPORT_C void SetDeQueueIfDueTimeInPast();
williamr@2
   332
	
williamr@4
   333
#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
williamr@4
   334
	IMPORT_C void SetWakeup(TBool aEnabled);
williamr@4
   335
	IMPORT_C TBool IsWakeup() const;
williamr@4
   336
#endif
williamr@4
   337
williamr@4
   338
#ifdef SYMBIAN_ALARM_REPEAT_EXTENSIONS
williamr@2
   339
	IMPORT_C TInt SetAlarmDays(TUint8 aAlarmDays);
williamr@2
   340
	IMPORT_C TUint8 AlarmDays() const;
williamr@2
   341
	IMPORT_C void SetContinuous(TBool aContinuous);
williamr@2
   342
	IMPORT_C TBool Continuous();
williamr@4
   343
#endif
williamr@2
   344
	
williamr@4
   345
public:										
williamr@4
   346
    // CLient Data Access 
williamr@2
   347
williamr@4
   348
    /**
williamr@4
   349
     * Returns a writable version of the alarm's client flags.
williamr@4
   350
     * 
williamr@4
   351
     * The client flags may be used for any client-specific data - the alarm server does not use them.
williamr@4
   352
     * 
williamr@4
   353
     * @return Reference to the alarm's bit flags.
williamr@4
   354
     */
williamr@4
   355
	inline TBitFlags16& ClientFlags() { return iClientFlags; }
williamr@4
   356
williamr@4
   357
    /**
williamr@4
   358
     * Returns this alarm's client flags.
williamr@4
   359
     * 
williamr@4
   360
     * @return Reference to the alarm's bit flags.
williamr@4
   361
     */
williamr@4
   362
	inline TBitFlags16 ClientFlags() const { return iClientFlags; }
williamr@4
   363
williamr@4
   364
    /**
williamr@4
   365
     * Returns the client data from slot 1 for this alarm.
williamr@4
   366
     * 
williamr@4
   367
     * @return The first client-specific integer.
williamr@4
   368
     */
williamr@4
   369
	inline TInt	ClientData1() const { return iClientData1; }
williamr@4
   370
williamr@4
   371
    /**
williamr@4
   372
     * Returns a writable version of the client data from slot 1 for this alarm.
williamr@4
   373
     * 
williamr@4
   374
     * @return Reference to the first client-specific integer.
williamr@4
   375
     */
williamr@4
   376
	inline TInt& ClientData1() { return iClientData1; }
williamr@4
   377
williamr@4
   378
    /**
williamr@4
   379
     * Returns the client data from slot 2 for this alarm.
williamr@4
   380
     * 
williamr@4
   381
     * @return The second client-specific integer.
williamr@4
   382
     */
williamr@4
   383
	inline TInt ClientData2() const { return iClientData2; }
williamr@4
   384
williamr@4
   385
    /**
williamr@4
   386
     * Returns the client data from slot 2 for this alarm.
williamr@4
   387
     * 
williamr@4
   388
     * @return The second client-specific integer.
williamr@4
   389
     */
williamr@4
   390
	inline TInt& ClientData2() { return iClientData2; }
williamr@4
   391
		
williamr@2
   392
	
williamr@4
   393
    /**
williamr@4
   394
     * Tests whether the alarm is floating.
williamr@4
   395
     * 
williamr@4
   396
     * Floating alarms expire at a given wall-clock time regardless of the 
williamr@4
   397
     * current locale and whether any daylight saving time rules are in force.
williamr@4
   398
     * 
williamr@4
   399
     * @return True if the alarm is floating.
williamr@4
   400
     */
williamr@4
   401
	inline TBool IsFloating() const { return iCharacteristics.IsClear(EAlarmCharacteristicsIsFixed); }
williamr@2
   402
	
williamr@4
   403
protected:									
williamr@4
   404
    // Internal Flags
williamr@4
   405
    
williamr@4
   406
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
   407
	/*
williamr@2
   408
	 * @internalAll
williamr@2
   409
	 */
williamr@2
   410
	enum TASShdAlarmFlags
williamr@2
   411
		{
williamr@4
   412
		/**
williamr@4
   413
		 * @publishedAll
williamr@2
   414
		 */
williamr@2
   415
		EASShdAlarmFlagsHasAssociatedData	= 0,
williamr@2
   416
williamr@4
   417
		/**
williamr@4
   418
		 * @publishedAll
williamr@2
   419
		 */
williamr@2
   420
		EASShdAlarmFlagsHasOwningSession	= 1,
williamr@2
   421
williamr@4
   422
		/**
williamr@4
   423
		 * @publishedAll
williamr@2
   424
		 */
williamr@2
   425
		EASShdAlarmFlagsHasBecomeOrphaned	= 2,
williamr@2
   426
		
williamr@4
   427
		/**
williamr@4
   428
		 * Set if alarm is disabled manually so that can not be enabled when locale changes.
williamr@4
   429
		 * 
williamr@4
   430
		 * @publishedAll 
williamr@2
   431
		 */
williamr@2
   432
		EASShdAlarmFlagsPermanentDisabled	= 4
williamr@2
   433
		};
williamr@4
   434
#endif
williamr@2
   435
williamr@2
   436
private:
williamr@4
   437
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@4
   438
    
williamr@4
   439
#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
williamr@2
   440
	/*
williamr@2
   441
	 * @internalComponent
williamr@2
   442
	 */
williamr@2
   443
	enum TASShdAlarmFlags2
williamr@2
   444
		{
williamr@4
   445
		EASShdAlarmFlag2Wakeup = 0,
williamr@2
   446
		};
williamr@4
   447
#endif
williamr@4
   448
	
williamr@4
   449
#ifdef SYMBIAN_ALARM_REPEAT_EXTENSIONS
williamr@4
   450
    /*
williamr@4
   451
	 * @internalComponent
williamr@4
   452
	 */
williamr@2
   453
	enum TASShdAlarmFlags2AlarmRepeatExtensions
williamr@2
   454
		{
williamr@2
   455
		EASShdAlarmFlag2AlarmDayMonday		= 1,
williamr@2
   456
		EASShdAlarmFlag2AlarmDayTuesday		= 2,
williamr@2
   457
		EASShdAlarmFlag2AlarmDayWednesday	= 3,
williamr@2
   458
		EASShdAlarmFlag2AlarmDayThursday	= 4,
williamr@2
   459
		EASShdAlarmFlag2AlarmDayFriday		= 5,
williamr@2
   460
		EASShdAlarmFlag2AlarmDaySaturday	= 6,
williamr@2
   461
		EASShdAlarmFlag2AlarmDaySunday		= 7,
williamr@2
   462
		EASShdAlarmFlag2Continuous			= 8
williamr@2
   463
		};
williamr@4
   464
#endif
williamr@4
   465
	
williamr@4
   466
#endif //SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@2
   467
williamr@2
   468
		
williamr@4
   469
protected:									
williamr@2
   470
williamr@4
   471
    /**
williamr@2
   472
	 * Various flags - used internally by the alarm object
williamr@2
   473
	 */
williamr@2
   474
	TBitFlags8 iFlags;
williamr@2
   475
williamr@4
   476
	/**
williamr@2
   477
	 * This represents the desired behaviour for a given alarm.
williamr@2
   478
	 * The Alarm Server uses this information to control the
williamr@2
   479
	 * behaviour of the alarm.
williamr@2
   480
	 *
williamr@2
   481
	 * @see TAlarmCharacteristics
williamr@2
   482
	 */
williamr@2
   483
	TAlarmCharacteristicsFlags iCharacteristics;
williamr@2
   484
williamr@4
   485
	/**
williamr@2
   486
	 * The unique identifier assoicated with each alarm maintained
williamr@2
   487
	 * by the alarm world server.
williamr@2
   488
	 */
williamr@2
   489
	TAlarmId iAlarmId;
williamr@2
   490
	
williamr@4
   491
	/**
williamr@2
   492
	 * The status of this alarm (e.g. enabled, disabled)
williamr@2
   493
	 */
williamr@2
   494
	TAlarmStatus iStatus;
williamr@2
   495
williamr@4
   496
	/**
williamr@2
   497
	 * The state of this alarm (e.g. queued, notifying, notified, snoozed etc)
williamr@2
   498
	 */
williamr@2
   499
	TAlarmState	iState;
williamr@2
   500
williamr@4
   501
	/**
williamr@2
   502
	 * The type of this alarm (e.g. day, timed)
williamr@2
   503
	 */
williamr@2
   504
	TAlarmDayOrTimed iDayOrTimed;
williamr@2
   505
williamr@4
   506
	/**
williamr@2
   507
	 * Controls how the alarm repeats after it has expired. Note that
williamr@2
   508
	 * session alarms are not allowed to repeat (they must be "once
williamr@2
   509
	 * only").
williamr@2
   510
	 */
williamr@2
   511
	TAlarmRepeatDefinition iRepeatDefinition;
williamr@2
   512
williamr@4
   513
	/**
williamr@2
   514
	 * This UID is supplied by the client and is used to indicate
williamr@2
   515
	 * the category that this alarm is part of. The Alarm Server
williamr@2
   516
	 * is category-agnostic, that is, this information is for
williamr@2
   517
	 * the client's use only
williamr@2
   518
	 */
williamr@2
   519
	TAlarmCategory iCategory;
williamr@2
   520
williamr@4
   521
	/**
williamr@2
   522
	 * The date and time at which this alarm is next due. For alarms
williamr@2
   523
	 * that haven't been snoozed, then this is the original due time.
williamr@2
   524
	 *
williamr@2
   525
	 * For alarms that have been snoozed, this is the time at which
williamr@2
   526
	 * the alarm will reawaken.
williamr@2
   527
	 */
williamr@2
   528
	TTime iNextDueTime;
williamr@2
   529
williamr@4
   530
	/**
williamr@2
   531
	 * This attribute is only used in the instance whereby an alarm
williamr@2
   532
	 * is snoozed. It represents the time at which the alarm first 
williamr@2
   533
	 * expired.
williamr@2
   534
	 */
williamr@2
   535
	TTime iOriginalExpiryTime;
williamr@2
   536
williamr@4
   537
	/**
williamr@2
   538
	 * The message associated with this alarm, typically used
williamr@2
   539
	 * in an application UI to inform the user as to the reason
williamr@2
   540
	 * for the alarm.
williamr@2
   541
	 */
williamr@2
   542
	TAlarmMessage iMessage;
williamr@2
   543
williamr@4
   544
	/**
williamr@2
   545
	 * A descriptor which holds the name of the sound file which
williamr@2
   546
	 * should be played when the alarm expires.
williamr@2
   547
	 */
williamr@2
   548
	TAlarmSoundName iSoundName;
williamr@2
   549
williamr@4
   550
protected:									
williamr@4
   551
    
williamr@4
   552
    // Client Specific Data
williamr@4
   553
    
williamr@4
   554
	/**
williamr@2
   555
	 * Flags for use by any particular client. These will
williamr@2
   556
	 * only be relevant to a client who can interpret them.
williamr@2
   557
	 */
williamr@2
   558
	TBitFlags16 iClientFlags;
williamr@2
   559
williamr@4
   560
	/**
williamr@2
   561
	 * For arbitrary client data 1
williamr@2
   562
	 */
williamr@2
   563
	TInt iClientData1;
williamr@2
   564
williamr@4
   565
	/**
williamr@2
   566
	 * For arbitrary client data 2
williamr@2
   567
	 */
williamr@2
   568
	TInt iClientData2;
williamr@2
   569
williamr@4
   570
private:									
williamr@4
   571
    // Binary Compatibility Proofing 
williamr@2
   572
	TSecureId iTASShdAlarmSID;
williamr@4
   573
williamr@4
   574
#ifdef SYMBIAN_SYSTEM_STATE_MANAGEMENT
williamr@4
   575
	/**
williamr@2
   576
	 * Various flags - used internally by the alarm object
williamr@2
   577
	 */
williamr@2
   578
	TBitFlags16 iFlags2;
williamr@2
   579
	TUint16 iTASShdAlarm_2;
williamr@4
   580
#else
williamr@4
   581
	
williamr@4
   582
#ifdef SYMBIAN_ALARM_REPEAT_EXTENSIONS
williamr@4
   583
	/**
williamr@4
   584
	 * Various flags - used internally by the alarm object
williamr@4
   585
	 */
williamr@4
   586
	TBitFlags16 iFlags2;
williamr@4
   587
	TUint16 iTASShdAlarm_2;
williamr@4
   588
#else
williamr@4
   589
	TAny* iTASShdAlarm_2;
williamr@4
   590
#endif
williamr@4
   591
#endif
williamr@2
   592
	TAny* iTASShdAlarm_3;
williamr@2
   593
	};
williamr@2
   594
williamr@2
   595
#endif // #ifndef __ASSHDALARM_H__