1 | //
|
---|
2 | // PSAlarm.h
|
---|
3 | // Pester
|
---|
4 | //
|
---|
5 | // Created by Nicholas Riley on Wed Oct 09 2002.
|
---|
6 | // Copyright (c) 2002 Nicholas Riley. All rights reserved.
|
---|
7 | //
|
---|
8 |
|
---|
9 | #import <Foundation/Foundation.h>
|
---|
10 | #import "PSPropertyListSerialization.h"
|
---|
11 |
|
---|
12 | typedef enum {
|
---|
13 | PSAlarmInvalid, // incorrectly specified
|
---|
14 | PSAlarmInterval, // interval specified (possibly repeating)
|
---|
15 | PSAlarmDate, // date specified
|
---|
16 | PSAlarmSet, // pending, timer set
|
---|
17 | PSAlarmSnooze, // expired alarm with snooze interval set (possibly repeating)
|
---|
18 | PSAlarmExpired // expired alarm (possibly repeating)
|
---|
19 | } PSAlarmType;
|
---|
20 |
|
---|
21 | extern NSString * const PSAlarmTimerSetNotification;
|
---|
22 | extern NSString * const PSAlarmTimerExpiredNotification;
|
---|
23 | extern NSString * const PSAlarmDiedNotification;
|
---|
24 |
|
---|
25 | @class PSAlert, PSAlerts, PSTimer;
|
---|
26 |
|
---|
27 | @interface PSAlarm : NSObject <NSCoding, PSPropertyListSerialization> {
|
---|
28 | PSAlarmType alarmType; // changes during lifetime of alarm; more like a state
|
---|
29 | NSCalendarDate *alarmDate;
|
---|
30 | NSTimeInterval alarmInterval;
|
---|
31 | NSTimeInterval snoozeInterval;
|
---|
32 | NSTimeInterval timeRemaining;
|
---|
33 | NSString *alarmMessage;
|
---|
34 | NSString *invalidMessage;
|
---|
35 | PSTimer *timer;
|
---|
36 | PSAlerts *alerts;
|
---|
37 | BOOL repeating;
|
---|
38 | }
|
---|
39 |
|
---|
40 | - (void)setInterval:(NSTimeInterval)anInterval;
|
---|
41 | - (void)setForDateAtTime:(NSCalendarDate *)dateTime;
|
---|
42 | - (void)setForDate:(NSDate *)date atTime:(NSDate *)time;
|
---|
43 | - (void)setMessage:(NSString *)aMessage;
|
---|
44 | - (void)setAlerts:(PSAlerts *)theAlerts;
|
---|
45 | - (void)setRepeating:(BOOL)isRepeating;
|
---|
46 | - (void)setSnoozeInterval:(NSTimeInterval)anInterval;
|
---|
47 | - (void)setWakeUp:(BOOL)doWake;
|
---|
48 |
|
---|
49 | - (NSCalendarDate *)date;
|
---|
50 | - (NSDate *)midnightOnDate;
|
---|
51 | - (NSDate *)time;
|
---|
52 | - (int)daysFromToday;
|
---|
53 | - (NSTimeInterval)interval;
|
---|
54 | - (NSTimeInterval)timeRemaining;
|
---|
55 | - (NSString *)message;
|
---|
56 | - (PSAlerts *)alerts;
|
---|
57 | - (BOOL)isRepeating;
|
---|
58 | - (NSTimeInterval)snoozeInterval; // most recent interval (nonzero return does not indicate alarm is snoozing or set to snooze)
|
---|
59 |
|
---|
60 | - (NSString *)dateString;
|
---|
61 | - (NSString *)shortDateString;
|
---|
62 | - (NSString *)timeString;
|
---|
63 | - (NSString *)dateTimeString; // current or next alarm time
|
---|
64 | - (NSString *)nextDateTimeString; // next alarm time
|
---|
65 | - (NSString *)intervalString;
|
---|
66 | - (NSString *)timeRemainingString;
|
---|
67 |
|
---|
68 | - (BOOL)isValid;
|
---|
69 | - (NSString *)invalidMessage;
|
---|
70 |
|
---|
71 | - (NSAttributedString *)prettyDescription;
|
---|
72 |
|
---|
73 | - (NSComparisonResult)compareDate:(PSAlarm *)otherAlarm;
|
---|
74 | - (NSComparisonResult)compareMessage:(PSAlarm *)otherAlarm;
|
---|
75 |
|
---|
76 | - (BOOL)setTimer; // or die, if expired and no snooze/repeat
|
---|
77 | - (void)cancelTimer;
|
---|
78 | - (void)resetTimer; // use after cancel, only effective on set alarms
|
---|
79 |
|
---|
80 | // 1.1 only, going away when we move to keyed archiving (or Core Data)
|
---|
81 | - (NSDictionary *)propertyListRepresentation;
|
---|
82 | - (id)initWithPropertyList:(NSDictionary *)dict;
|
---|
83 |
|
---|
84 | @end
|
---|