Ignore:
Timestamp:
11/18/02 08:57:41 (21 years ago)
Author:
Nicholas Riley
Message:

Alarms.nib: Removed horizontal scroll bar. Turned on grid. Set delegate to NJRTableDelegate instead of PSAlarmSetController.

NJRTableDelegate: In general, made functional (was previously unused). Fixed MyCompanyName. Changed ORDER_BY_CONTEXT to use key-value coding instead of assuming data consists of a dictionary of dictionaries. Added sorting support (reorderedData, replaces oData) with autosave support for sort context. Added _positionTypeSelectDisplay, which adjusts position and justification of type select display control based on the current sort column. Added support for reverse sorting in type select string. Use table data source instead of sorted data so text matches as displayed (this will break with non-text cells...).

NJRTableView: Adapted from iTableView (Jaguar table alternate table background color), TableTester (most everything else) and NJROutlineView (keyDown, moveToBeginning/EndOfDocument). Support for type selection, delete shortcut for row deletion, and iTunes-alike background colors and frame.

NSCharacterSet-NJRExtensions: Moved _typeSelectSet from NJROutlineView as it's now shared with NJRTableView. Still need to factor NJROutlineView as embedded in HostLauncher some day.

PSAlarm: Reorganized, renamed and categorized methods. Added time accessor for the benefit of sorting. Renamed compare: to compareDate: for clarity. Added compareMessage:, though it's currently unused. Renamed cancel to cancelTimer for clarity.

PSAlarmSetController: More fun with initial first responder on window show/hide; still need to work around bug properly (subclass NSComboBox?) and fix it for real. As is, works for OS X 10.1.

PSAlarms: Added alarms accessor, returning alarm array. Fixed memory leak on successful alarm removal (oops). Added removeAlarms:, needed with sorted alarm list.

PSAlarmsController: Set window resize increment. Changes to table delegate methods to use reordered alarm list. Register for NSTableViewSelectionDidChangeNotification now we're no longer the table view delegate. Fixed autoselection in alarmsChanged by using data reordering support in NJRTableView. Implement NJRTableViewDataSource to permit deletion from table view.

Pester.pbproj: Added new files.

Read Me.rtfd: Added TableTester/iTableView acknowledgements. Updated release notes.

File:
1 edited

Legend:

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

    r28 r51  
    4646    nextAlarm = nil;
    4747    // sort alarms so earliest is first
    48     [alarms sortUsingSelector: @selector(compare:)];
     48    [alarms sortUsingSelector: @selector(compareDate:)];
    4949    // find first un-expired alarm
    5050    e = [alarms objectEnumerator];
     
    126126}
    127127
     128- (NSArray *)alarms;
     129{
     130    return alarms;
     131}
     132
    128133- (int)alarmCount;
    129134{
     
    138143- (void)removeAlarmAtIndex:(int)index;
    139144{
    140     [(PSAlarm *)[alarms objectAtIndex: index] cancel];
     145    [(PSAlarm *)[alarms objectAtIndex: index] cancelTimer];
    141146    [alarms removeObjectAtIndex: index];
    142147}
     
    151156        while ( (n = [e nextObject]) != nil) {
    152157            alarmIndex = [n intValue];
    153             [(PSAlarm *)[alarms objectAtIndex: alarmIndex] cancel];
     158            [(PSAlarm *)[alarms objectAtIndex: alarmIndex] cancelTimer];
    154159            indexArray[i] = alarmIndex;
    155160            i++;
    156161        }
    157162        [alarms removeObjectsFromIndices: indexArray numIndices: indexCount];
     163        free(indexArray); indexArray = NULL;
    158164        [self _changed];
    159165    NS_HANDLER
     
    164170}
    165171
     172- (void)removeAlarms:(NSSet *)alarmsToRemove;
     173{
     174    NSEnumerator *e = [alarms objectEnumerator];
     175    PSAlarm *alarm;
     176    NSMutableArray *indices = [NSMutableArray arrayWithCapacity: [alarmsToRemove count]];
     177    int alarmIndex = 0;
     178
     179    while ( (alarm = [e nextObject]) != nil) {
     180        if ([alarmsToRemove containsObject: alarm])
     181            [indices addObject: [NSNumber numberWithInt: alarmIndex]];
     182        alarmIndex++;
     183    }
     184    [self removeAlarmsAtIndices: indices];
     185}
     186
    166187@end
Note: See TracChangeset for help on using the changeset viewer.