-
Notifications
You must be signed in to change notification settings - Fork 1
/
TimeInputController.m
105 lines (85 loc) · 3.96 KB
/
TimeInputController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* Copyright © 2003, Leaky Puppy Software, Net Monkey Inc.
This file is part of Fob.
Fob is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
Fob is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Fob; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
// TimeInputController.m
// Fob
//
// Created by Thomas Finley on Sun Jan 05 2003.
// Copyright (c) 2003 Leaky Puppy Software, for Net Monkey Inc. All rights reserved.
// This program is distributed under the terms of the GNU General Public License.
#import "TimeInputController.h"
#import "Alarm.h"
#import "DoneActionInputController.h"
#import "prefs.h"
@implementation TimeInputController
- (void)awakeFromNib {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
Alarm * a =[NSUnarchiver unarchiveObjectWithData:[defaults objectForKey:FobDisplayedAlarmKey]];
[self timeChanged:hourField];
lastStepperValue = [stepper intValue];
[self setDisplayedAlarm:a];
[nc addObserver:self
selector:@selector(handleTimeChanged:)
name:@"FobTimeChanged"
object:timeView];
[nc addObserver:self
selector:@selector(handleQuitting:)
name:@"NSApplicationWillTerminateNotification"
object:nil];
}
- (void)handleQuitting:(NSNotification *)note {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSArchiver archivedDataWithRootObject:[self displayedAlarm]]
forKey:FobDisplayedAlarmKey];
}
- (IBAction)timeChanged:(id)sender {
long long hour = [hourField intValue];
long long minute = [minuteField intValue];
long long second = [secondField intValue];
long long msecs = ((hour*60+minute)*60+second)*1000;
[timeView setMillisecondsUser:msecs];
}
- (IBAction)timeStepClicked:(id)sender {
int dv = [stepper intValue] - lastStepperValue;
[timeView step:(dv == 1 || dv < -1)];
lastStepperValue = [stepper intValue];
}
- (IBAction)repeatClicked:(id)sender {
}
/** The text fields will be modified according to the time display. */
- (void)setFieldsAccordingToTimeView {
[hourField setIntValue:[timeView hours]];
[minuteField setIntValue:[timeView minutes]];
[secondField setIntValue:[timeView seconds]];
}
- (void)handleTimeChanged:(NSNotification *)note {
//NSLog(@"The time was registered as changed!");
[self setFieldsAccordingToTimeView];
}
- (void)setDisplayedAlarm:(Alarm *)alarm {
[timeView setMilliseconds:[alarm millisecondsRemaining]];
[self setFieldsAccordingToTimeView];
[doneActionInputController setDisplayedDoneAction:[alarm doneAction]];
[descriptionField setStringValue:[alarm title]];
[repeatsCheckbox setState:[alarm repeats] ? NSOnState : NSOffState];
}
- (Alarm *)displayedAlarm {
// Make sure that if the user is still editing the text fields for time and title that these are changed.
/*[hourField validateEditing];
[minuteField validateEditing];
[secondField validateEditing];
[descriptionField validateEditing];*/
[self timeChanged:nil];
Alarm * alarm = [[Alarm alloc] initWithTitle:[descriptionField stringValue]
forSecondDuration:[timeView milliseconds]/1000];
[alarm setDoneAction:[doneActionInputController displayedDoneAction]];
[alarm setRepeats:[repeatsCheckbox state]==NSOnState];
return [alarm autorelease];
}
- (long long)milliseconds {
return [timeView milliseconds];
}
@end