[102] | 1 | //
|
---|
| 2 | // PSTimeDateEditor.m
|
---|
| 3 | // Pester
|
---|
| 4 | //
|
---|
| 5 | // Created by Nicholas Riley on Sun Feb 16 2003.
|
---|
| 6 | // Copyright (c) 2003 Nicholas Riley. All rights reserved.
|
---|
| 7 | //
|
---|
| 8 |
|
---|
| 9 | #import "PSTimeDateEditor.h"
|
---|
| 10 | #import "NJRDateFormatter.h"
|
---|
| 11 |
|
---|
| 12 | @implementation PSTimeDateEditor
|
---|
| 13 |
|
---|
| 14 | + (void)setUpTimeField:(NSTextField *)timeOfDay dateField:(NSTextField *)timeDate completions:(NSPopUpButton *)timeDateCompletions;
|
---|
| 15 | {
|
---|
| 16 | static NJRDateFormatter *timeFormatter = nil, *dateFormatter = nil;
|
---|
| 17 | if (timeFormatter == nil) {
|
---|
| 18 | timeFormatter = [[NJRDateFormatter alloc] initWithDateFormat: [NJRDateFormatter localizedTimeFormatIncludingSeconds: NO] allowNaturalLanguage: YES];
|
---|
| 19 | dateFormatter = [[NJRDateFormatter alloc] initWithDateFormat: [NJRDateFormatter localizedDateFormatIncludingWeekday: NO] allowNaturalLanguage: YES];
|
---|
| 20 | }
|
---|
| 21 | [timeOfDay setFormatter: timeFormatter];
|
---|
| 22 | [timeDate setFormatter: dateFormatter];
|
---|
| 23 | [timeDate setObjectValue: [NSDate date]];
|
---|
| 24 |
|
---|
| 25 | // add completions
|
---|
| 26 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
---|
| 27 | NSArray *dayNames = [defaults arrayForKey: NSWeekDayNameArray];
|
---|
| 28 | NSArray *completions = [timeDateCompletions itemTitles];
|
---|
| 29 | NSEnumerator *e = [completions objectEnumerator];
|
---|
| 30 | NSString *title;
|
---|
| 31 | int itemIndex = 0;
|
---|
| 32 | NSRange matchingRange;
|
---|
| 33 | while ( (title = [e nextObject]) != nil) {
|
---|
| 34 | matchingRange = [title rangeOfString: @"ÇdayÈ"];
|
---|
| 35 | if (matchingRange.location != NSNotFound) {
|
---|
| 36 | NSMutableString *format = [title mutableCopy];
|
---|
| 37 | NSEnumerator *we = [dayNames objectEnumerator];
|
---|
| 38 | NSString *dayName;
|
---|
| 39 | [format deleteCharactersInRange: matchingRange];
|
---|
| 40 | [format insertString: @"%@" atIndex: matchingRange.location];
|
---|
| 41 | [timeDateCompletions removeItemAtIndex: itemIndex];
|
---|
| 42 | while ( (dayName = [we nextObject]) != nil) {
|
---|
| 43 | [timeDateCompletions insertItemWithTitle: [NSString stringWithFormat: format, dayName] atIndex: itemIndex];
|
---|
| 44 | itemIndex++;
|
---|
| 45 | }
|
---|
| 46 | } else itemIndex++;
|
---|
| 47 | }
|
---|
| 48 | }
|
---|
| 49 |
|
---|
| 50 | @end
|
---|