This is VerifyController.m in view mode; [Download] [Up]
/*
File: VerifyController.m
Contains: Source code for the Controller of the "Verify" window
Written by: Eric Simenel
Created: May 1997
Copyright: (c)1997 by Apple Computer, Inc., all rights reserved.
Change History (most recent first):
You may incorporate this sample code into your applications without
restriction, though the sample code has been provided "AS IS" and the
responsibility for its operation is 100% yours. However, what you are
not permitted to do is to redistribute the source as "DSC Sample Code"
after having made changes. If you're going to re-distribute the source,
we require that you make it clear in the source that the code was
descended from Apple Sample Code, but that you've made changes.
*/
#import "VerifyController.h"
#import "BrowserController.h"
#import "CalendarController.h"
#import "TitleLongevityController.h"
#import "ComicsObj.h"
@implementation VerifyController
// private helper method: update the UI when the data array has changed
- (void)_update
{
[verifyView noteNumberOfRowsChanged];
[verifyView reloadData];
}
- (void)selChanged
{
// get the right array of titles
[comicsBase sortArray:array withBrand:brand withSeries:series withKind:kind withState:state withSort:sort];
nbRows = [array count];
[nbSelTitles setIntValue:nbRows];
[self _update];
}
- (void)brandSelect:(id)sender
{
short newBrand = [sender indexOfSelectedItem];
if (newBrand != brand) { brand = newBrand; [self selChanged]; }
}
- (void)kindSelect:(id)sender
{
short newKind = [sender indexOfSelectedItem];
if (newKind != kind) { kind = newKind; [self selChanged]; }
}
- (void)seriesSelect:(id)sender
{
short newSeries = [sender indexOfSelectedItem];
if (newSeries != series) { series = newSeries; [self selChanged]; }
}
- (void)stateSelect:(id)sender
{
short newState = [sender indexOfSelectedItem];
if (newState != state) { state = newState; [self selChanged]; }
}
- (void)sortSelect:(id)sender
{
short newSort = [sender indexOfSelectedItem];
if (newSort != sort) { sort = newSort; [self selChanged]; }
}
- (id)init
{
if (self = [super init])
{
nbRows = 0;
brand = 0;
series = 0;
kind = 0;
state = 0;
sort = 0;
// I have a lttle less than 1500 titles currently, hence the following capacity...
array = [[NSMutableArray alloc] initWithCapacity:1500];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(comicsChanged:) name:ComicsDidChangeNotification object:nil];
}
return self;
}
- (void)comicsChanged:(NSNotification *)note
{
[nbIssues setIntValue:[comicsBase nbIssues]];
[nbTitles setIntValue:[comicsBase nbTitles]];
[self selChanged];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:ComicsDidChangeNotification object:nil];
[array release];
[super dealloc];
}
- (void)awakeFromNib
{
[self comicsChanged:nil];
}
// Since numberOfRowsInTableView is called a ZILLION times by the NSTableView object methods,
// do the number of rows calculation in selChanged, and save off the value in the nbRows field
// so that I can just return the value.
- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
return nbRows;
}
- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
{
CTitle *thisTitle = [array objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
if ([identifier isEqualToString:@"Abb"])
return [thisTitle abb];
else if ([identifier isEqualToString:@"Title"])
return [thisTitle title];
else return [thisTitle listIssues];
}
// loading subprojects
- (void)newBrowser:(id)sender { [[BrowserController alloc] init]; }
- (void)newCalendar:(id)sender { [[CalendarController alloc] init]; }
- (void)newTitleLongevity:(id)sender { [[TitleLongevityController alloc] init]; }
// NSApp delegate: ask the InputController if the comics database has been modified or not,
// and if the user has then saved it or not or cancelled the quit process.
- (BOOL)applicationShouldTerminate:(id)sender
{
return [inputWindow windowShouldClose:nil]?YES:NO;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.