This is Controller.m in view mode; [Download] [Up]
// Written by Todd Thomas Copyright (c) 1995 by Todd Thomas.
// Version 1.0. All rights reserved.
//
// This notice may not be removed from this source code.
//
// This object is included in the MiscKit by permission from the author
// and its use is governed by the MiscKit license, found in the file
// "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
// for a list of all applicable permissions and restrictions.
//
#import <misckit/MiscUser.h>
#import <misckit/MiscUserGroup.h>
#import "UIMgr.h"
#import "Controller.h"
@implementation Controller
- init
{
[super init];
displayList = nil;
return self;
}
- free
{
if (displayList != nil)
[ [displayList freeObjects] free];
return [super free];
}
- loadAllUsers
{
// Load all the users into the display list which will be what
// is displayed in the browser.
if (displayList != nil)
[ [displayList freeObjects] free];
displayList = [MiscUser allUsers];
return self;
}
- loadAllGroups
{
// Load all the groups into the display list.
if (displayList != nil)
[ [displayList freeObjects] free];
displayList = [MiscUserGroup allGroups];
return self;
}
- (BOOL)lookupGid: (int)gid
{
MiscUserGroup *group = [ [MiscUserGroup alloc] initWithGroupId: gid];
if (group == nil)
return NO;
[uiMgr setGroupName: [group groupName] ];
if (displayList != nil)
[ [displayList freeObjects] free];
displayList = [group members];
[group free];
return YES;
}
- (BOOL)lookupGroupName: (const char *)gname
{
MiscUserGroup *group = [ [MiscUserGroup alloc] initWithGroupName: gname];
if (group == nil)
return NO;
[uiMgr setGid: [group groupId] ];
if (displayList != nil)
[ [displayList freeObjects] free];
displayList = [group members];
[group free];
return YES;
}
- (BOOL)lookupUid: (int)uid
{
MiscUser *user = [ [MiscUser alloc] initWithUserId: uid];
if (user == nil)
return NO;
[uiMgr setUsername: [user username] ];
[uiMgr setFullName: [user realname] ];
[uiMgr setHomeDirectory: [user homeDirectory] ];
[uiMgr setShell: [user shell] ];
if (displayList != nil)
[ [displayList freeObjects] free];
displayList = [user groups];
[user free];
return YES;
}
- (BOOL)lookupUsername: (const char *)uname
{
MiscUser *user = [ [MiscUser alloc] initWithUsername: uname];
if (user == nil)
return NO;
[uiMgr setUid: [user userId] ];
[uiMgr setFullName: [user realname] ];
[uiMgr setHomeDirectory: [user homeDirectory] ];
[uiMgr setShell: [user shell] ];
if (displayList != nil)
[ [displayList freeObjects] free];
displayList = [user groups];
[user free];
return YES;
}
@end
@implementation Controller (BrowserDelegate)
- (int)browser:sender fillMatrix:matrix inColumn:(int)column
{
id anObject;
id cell = nil;
int i;
for (i=0; i<[displayList count]; i++)
{
[matrix insertRowAt: i];
cell = [matrix cellAt: i :0];
anObject = [displayList objectAt: i];
// The list can either be full of MiscUsers or MiscUserGroups,
// so if it doesn't respond to one method, send it the other.
if ([anObject respondsTo: @selector(username)])
[cell setStringValue: [anObject username] ];
else
[cell setStringValue: [anObject groupName] ];
[cell setLoaded: YES];
[cell setLeaf: YES];
}
return [displayList count];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.