source: trunk/Cocoa/Pester/Source/PSTimeDateEditor.m@ 547

Last change on this file since 547 was 521, checked in by Nicholas Riley, 16 years ago

Restore "today" item to date completion menus.

File size: 2.4 KB
Line 
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 [[NJRDateFormatter alloc] init]; // XXX testing
17 [NSDateFormatter setDefaultFormatterBehavior: NSDateFormatterBehavior10_4];
18 static NSDateFormatter *timeFormatter = nil, *dateFormatter = nil;
19 if (timeFormatter == nil) {
20 timeFormatter = [[NJRDateFormatter timeFormatter] retain];
21 [timeFormatter setLenient: YES];
22 [timeFormatter setDateStyle: NSDateFormatterNoStyle];
23 [timeFormatter setTimeStyle: NSDateFormatterShortStyle];
24 dateFormatter = [[NJRDateFormatter dateFormatter] retain];
25 [dateFormatter setLenient: YES];
26 [dateFormatter setDateStyle: NSDateFormatterLongStyle];
27 [dateFormatter setTimeStyle: NSDateFormatterNoStyle];
28 }
29 [timeOfDay setFormatter: timeFormatter];
30 [timeDate setFormatter: dateFormatter];
31 [timeDate setObjectValue: [NSDate date]];
32
33 // add completions
34 NSArray *dayNames = [dateFormatter weekdaySymbols];
35 NSArray *completions = [timeDateCompletions itemTitles];
36 NSEnumerator *e = [completions objectEnumerator];
37 NSString *title;
38 int itemIndex = 0;
39 NSRange matchingRange;
40 while ( (title = [e nextObject]) != nil) {
41 matchingRange = [title rangeOfString: @"«day»"];
42 if (matchingRange.location != NSNotFound) {
43 NSMutableString *format = [title mutableCopy];
44 NSEnumerator *we = [dayNames objectEnumerator];
45 NSString *dayName;
46 [format deleteCharactersInRange: matchingRange];
47 [format insertString: @"%@" atIndex: matchingRange.location];
48 [timeDateCompletions removeItemAtIndex: itemIndex];
49 while ( (dayName = [we nextObject]) != nil) {
50 [timeDateCompletions insertItemWithTitle: [NSString stringWithFormat: format, dayName] atIndex: itemIndex];
51 itemIndex++;
52 }
53 [format release];
54 } else itemIndex++;
55 }
56 if ([timeDateCompletions pullsDown]) // add a dummy first item, which gets consumed for the (obscured) title
57 [timeDateCompletions insertItemWithTitle: @"" atIndex: 0];
58}
59
60@end
Note: See TracBrowser for help on using the repository browser.