This is Passwd.m in view mode; [Download] [Up]
/*
* Filename: Passwd.m
* Created : Sat Jan 4 20:53:02 1992
* Author : Vince DeMarco
* <vince@whatnxt.cuc.ab.ca>
*/
/* Generated by Interface Builder */
#import "Passwd.h"
#import <appkit/Application.h>
#import <appkit/Window.h>
#import <appkit/View.h>
#import <appkit/TextField.h>
#import <appkit/publicWraps.h>
#import <appkit/Menu.h>
#import <appkit/defaults.h>
#import <strings.h>
#import <sys/time.h>
#import <libc.h>
#import "passwd.h"
@implementation Passwd
static void LocalDateAndTime(char *buffer,int maxBufferSize, const time_t *time)
{
const char *format;
if ( (format = NXGetDefaultValue([NXApp appName], "NXDateAndTime")) == NULL){
format = "%a %b %d %H:%M:%S %Z %Y";
}
strftime(buffer,maxBufferSize,format,localtime(time));
}
- init
{
self = [super init];
passwdEntry = getpwnam(NXUserName());
nubmerOfattempts = 0;
return self;
}
- free
{
[window free];
return [super free];
}
- passwdEntered:sender
{
char *encoded = crypt((char *)[sender stringValue],(char *)passwdEntry->pw_passwd);
[passwdText setStringValue:NULL];
if (encoded){
if (! strcmp(encoded,passwdEntry->pw_passwd)){
nubmerOfattempts = 0;
[self enableMainMenu];
[self orderWindowOut];
[NXApp hide:self];
}else{
[self clearPasswdField];
[self incorrectPasswd];
}
}else{
[self orderWindowOut];
}
return self;
}
- requestPasswd:sender
{
if ([NXApp isHidden]){
[NXApp unhide:self];
}
[self orderWindowFront];
return self;
}
- incorrectPasswd
{
#define OFFSET 100.0
#define FRAMETIME 30
#define UPDATE [window display]; \
[window flushWindow]; \
NXPing();
NXBeep();
nubmerOfattempts++;
[attemptsField setIntValue: nubmerOfattempts];
[contentBox moveTo: xpos-OFFSET : ypos];
UPDATE;
[contentBox moveTo: xpos+OFFSET : ypos];
UPDATE;
[contentBox moveTo: xpos-OFFSET : ypos];
UPDATE;
[contentBox moveTo: xpos+OFFSET : ypos];
UPDATE;
[contentBox moveTo: xpos : ypos];
UPDATE;
return self;
}
- clearPasswdField
{
[passwdText setStringValue:NULL];
[passwdText selectText:self];
return self;
}
- orderWindowFront
{
char infoString[1024];
char timebuffer[50];
time_t timeVal = time(0);
[attemptsField setIntValue: nubmerOfattempts];
if (![window isVisible]){
[self disableMainMenu];
if (!window){
[self createWindow];
}
LocalDateAndTime(timebuffer,50,&timeVal);
sprintf(infoString,"Screen has been locked by %s\n on %s",passwdEntry->pw_gecos, timebuffer);
[infoText setStringValue:(const char*)infoString];
[self clearPasswdField];
setWindowLevel([window windowNum],51);
[window makeKeyAndOrderFront:self];
}
return self;
}
- orderWindowOut
{
[window orderOut:self];
return self;
}
- createWindow
{
NXRect windowRect;
NXRect contRect;
NXSize screenSize;
if (!contentBox){
[NXApp loadNibSection:"Passwd.nib" owner:self withNames:NO fromZone:[self zone]];
}
[NXApp getScreenSize:&screenSize];
[contentBox getFrame:&contRect];
windowRect.origin.x = windowRect.origin.y = 0;
windowRect.size.width = screenSize.width;
windowRect.size.height = screenSize.height;
xpos = (screenSize.width - contRect.size.width ) / 2;
ypos = (screenSize.height - contRect.size.height) / 2;
window = [[Window allocFromZone:[self zone]]
initContent:&windowRect style:NX_PLAINSTYLE backing:NX_BUFFERED buttonMask:0 defer:NO];
[contentBox removeFromSuperview];
[contentBox moveTo: xpos : ypos];
[[window contentView] addSubview : contentBox];
[window useOptimizedDrawing:YES];
[window display];
return self;
}
- disableMainMenu
{
id matrix = [[NXApp mainMenu] itemList];
[matrix setEnabled:NO];
return self;
}
- enableMainMenu
{
id matrix = [[NXApp mainMenu] itemList];
[matrix setEnabled:YES];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.