This is Calendar.m in view mode; [Download] [Up]
#import "Calendar.h"
@implementation Calendar
// awakeFromNib
// This is one of the last methods executed after the nib file is loaded.
// This is the BEST way I know how to initialize an object and jump into
// a method after the nib file was loaded.
- (void)awakeFromNib
{
[self NowCalendar:NULL];
}
- (void)lastYear:(id)sender
// Subtracts 1 year from the current year.
{
year--;
if (year<1900) year =1900; // Does not go lower then that year.
[self rebuildCalView:sender];
}
- (void)nextYear:(id)sender
// Adds 1 year to the current year.
{
year++;
[self rebuildCalView:sender];
}
- (void)NextCalendar:(id)sender
// This displays the next month's calendar.
{
if (month < 12)
month++;
else {
year++;
month = 1;
}
[self rebuildCalView:sender];
}
- (void)PreviousCalendar:(id)sender
// This displays the previous month's calendar.
{
if (month > 1)
month--;
else {
year--;
month = 12;
}
[self rebuildCalView:sender];
}
- (void)NowCalendar:(id)sender
// This sets and displays the present month and year.
{
// Local Variables
long time(), tmpTime;
struct tm *tm, *localtime();
tmpTime = time(0);
tm = localtime( &tmpTime );
month = (tm->tm_mon+1);
year = (1900+tm->tm_year);
[self rebuildCalView:sender];
}
- (void)PrintCalendar:(id)sender
{
}
- (void)rebuildCalView:(id)sender
// This method builds the current, previous and next calendars in the window.
{
// Local Variables
FILE *calCmd;
char c, buff[256], *pbuff;
int tempMonth, tempYear;
// Display the current month
sprintf( buff, "cal %d %d", month, year );
if ( (calCmd=popen(buff, "r")) == NULL )
[theCalView setStringValue:@"Can't build calendar!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[theCalView setStringValue:[NSString stringWithCString:buff]];
}
// Display the previous month of the current month.
if (month > 1) {
tempMonth = month - 1;
tempYear = year;
}
else {
tempMonth = 12;
tempYear = year - 1;
}
sprintf( buff, "cal %d %d", tempMonth, tempYear );
if ( (calCmd=popen(buff, "r")) == NULL )
[theCalView setStringValue:@"Can't build calendar!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[CalViewPrevious setStringValue:[NSString stringWithCString:buff]];
}
// Display the next month after the current month.
if (month < 12) {
tempMonth = month + 1;
tempYear = year;
}
else {
tempMonth = 1;
tempYear = year + 1;
}
sprintf( buff, "cal %d %d", tempMonth, tempYear );
if ( (calCmd=popen(buff, "r")) == NULL )
[theCalView setStringValue:@"Can't build calendar!"];
else {
pbuff = buff;
while( (c=fgetc(calCmd)) != EOF )
*(pbuff++)=c;
*pbuff='\0';
pclose(calCmd);
[CalViewNext setStringValue:[NSString stringWithCString:buff]];
}
[calendarPanel makeKeyAndOrderFront:NULL];
}
- (void)SetYear:(id)sender
{
year = [SelectYearDisplay intValue];
[YearPanel performClose:sender];
[self rebuildCalView:sender];
}
- (void)January:(id)sender
{
month = 1;
[self rebuildCalView:sender];
}
- (void)February:(id)sender
{
month = 2;
[self rebuildCalView:sender];
}
- (void)March:(id)sender
{
month = 3;
[self rebuildCalView:sender];
}
- (void)April:(id)sender
{
month = 4;
[self rebuildCalView:sender];
}
- (void)May:(id)sender
{
month = 5;
[self rebuildCalView:sender];
}
- (void)June:(id)sender
{
month = 6;
[self rebuildCalView:sender];
}
- (void)July:(id)sender
{
month = 7;
[self rebuildCalView:sender];
}
- (void)August:(id)sender
{
month = 8;
[self rebuildCalView:sender];
}
- (void)September:(id)sender
{
month = 9;
[self rebuildCalView:sender];
}
- (void)October:(id)sender
{
month = 10;
[self rebuildCalView:sender];
}
- (void)November:(id)sender
{
month = 11;
[self rebuildCalView:sender];
}
- (void)December:(id)sender
{
month = 12;
[self rebuildCalView:sender];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.