Ignore:
Timestamp:
02/23/03 04:55:07 (21 years ago)
Author:
Nicholas Riley
Message:

Pester 1.1b3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Cocoa/Pester/Source/PSAlarmSetController.m

    r61 r102  
    99#import "PSAlarmSetController.h"
    1010#import "PSAlarmAlertController.h"
     11#import "PSCalendarController.h"
    1112#import "PSPowerManager.h"
     13#import "PSTimeDateEditor.h"
    1214#import "NJRDateFormatter.h"
    1315#import "NJRFSObjectSelector.h"
     
    7173    alarm = [[PSAlarm alloc] init];
    7274    [[self window] center];
    73     // XXX excessive retention of formatters?  check later...
    74     [timeOfDay setFormatter: [[NJRDateFormatter alloc] initWithDateFormat: [NJRDateFormatter localizedTimeFormatIncludingSeconds: NO] allowNaturalLanguage: YES]];
    75     [timeDate setFormatter: [[NJRDateFormatter alloc] initWithDateFormat: [NJRDateFormatter localizedDateFormatIncludingWeekday: NO] allowNaturalLanguage: YES]];
    76     {
    77         NSArray *dayNames = [defaults arrayForKey:
    78             NSWeekDayNameArray];
    79         NSArray *completions = [timeDateCompletions itemTitles];
    80         NSEnumerator *e = [completions objectEnumerator];
    81         NSString *title;
    82         int itemIndex = 0;
    83         NSRange matchingRange;
    84         while ( (title = [e nextObject]) != nil) {
    85             matchingRange = [title rangeOfString: @"ÇdayÈ"];
    86             if (matchingRange.location != NSNotFound) {
    87                 NSMutableString *format = [title mutableCopy];
    88                 NSEnumerator *we = [dayNames objectEnumerator];
    89                 NSString *dayName;
    90                 [format deleteCharactersInRange: matchingRange];
    91                 [format insertString: @"%@" atIndex: matchingRange.location];
    92                 [timeDateCompletions removeItemAtIndex: itemIndex];
    93                 while ( (dayName = [we nextObject]) != nil) {
    94                     [timeDateCompletions insertItemWithTitle: [NSString stringWithFormat: format, dayName] atIndex: itemIndex];
    95                     itemIndex++;
    96                 }
    97             } else itemIndex++;
    98         }
    99     }
     75    [PSTimeDateEditor setUpTimeField: timeOfDay dateField: timeDate completions: timeDateCompletions];
    10076    [editAlert setIntValue: [defaults boolForKey: PSAlertsEditing]];
    10177    {
     
    11490        [self _readAlerts: alerts];
    11591    }
    116     [timeDate setObjectValue: [NSDate date]];
    11792    [self inAtChanged: nil]; // by convention, if sender is nil, we're initializing
    11893    [self playSoundChanged: nil];
     
    175150}
    176151
    177 // XXX use OACalendar in popup like Palm Desktop?
    178 
    179152- (IBAction)updateDateDisplay:(id)sender;
    180153{
     
    226199    [timeDate setEnabled: !isInterval];
    227200    [timeDateCompletions setEnabled: !isInterval];
     201    [timeCalendarButton setEnabled: !isInterval];
    228202    if (sender != nil)
    229203        [[self window] makeFirstResponder: isInterval ? (NSTextField *)timeInterval : timeOfDay];
     204    if (!isInterval) { // need to do this every time the controls are enabled
     205        [timeOfDay setNextKeyView: timeDate];
     206    }
    230207    // NSLog(@"UPDATING FROM inAtChanged");
    231208    [self update: nil];
     
    238215}
    239216
     217#pragma mark calendar
     218
     219- (IBAction)showCalendar:(NSButton *)sender;
     220{
     221    [PSCalendarController controllerWithDate: [NSCalendarDate dateForDay: [timeDate objectValue]] delegate: self];
     222}
     223
     224- (void)calendarController:(PSCalendarController *)calendar didSetDate:(NSCalendarDate *)date;
     225{
     226    [timeDate setObjectValue: date];
     227    [self update: self];
     228}
     229
     230- (NSView *)calendarControllerLaunchingView:(PSCalendarController *)controller;
     231{
     232    return timeCalendarButton;
     233}
     234
    240235#pragma mark alert editing
     236
     237- (IBAction)toggleAlertEditor:(id)sender;
     238{
     239    [editAlert performClick: self];
     240}
    241241
    242242- (IBAction)editAlertChanged:(id)sender;
     
    293293}
    294294
    295 
    296295- (IBAction)playSoundChanged:(id)sender;
    297296{
     
    459458    [alarm setMessage: [messageField stringValue]];
    460459    if (![alarm setTimer]) {
    461         [self setStatus: [@"Unable to set alarm.  " stringByAppendingString: [alarm invalidMessage]]];
     460        [self setStatus: [@"Unable to set alarm. " stringByAppendingString: [alarm invalidMessage]]];
    462461        return;
    463462    }
     
    475474}
    476475
     476- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
     477{
     478    if ([anItem action] == @selector(toggleAlertEditor:)) {
     479        if ([NSApp keyWindow] != [self window])
     480            return NO;
     481        [(NSMenuItem *)anItem setState: [editAlert intValue] ? NSOnState : NSOffState];
     482    }
     483    return YES;
     484}
     485
    477486@end
    478487
Note: See TracChangeset for help on using the changeset viewer.