This is InboxCell.m in view mode; [Download] [Up]
#import "InboxCell.h" #import <appkit/Text.h> @implementation InboxCell - loadValues: (Inbox *) inbox { int i; /* Create the cells if they don't exist */ if (!name) name = [Cell newTextCell: ""]; if (!messageCount) messageCount = [[Cell newTextCell: ""] setAlignment: NX_RIGHTALIGNED]; if (!unreadCount) unreadCount = [[Cell newTextCell: ""] setAlignment: NX_RIGHTALIGNED]; /* Set the values, making numerics blank when zero. */ [name setStringValueNoCopy: [inbox name]]; if (i = [inbox messageCount]) [messageCount setIntValue: i]; else [messageCount setStringValue: ""]; if (i = [inbox unreadCount]) [unreadCount setIntValue: i]; else [unreadCount setStringValue: ""]; return self; } /* This doesn't actually draw this cell at all. Instead, it asks the component cells to draw their insides in the right places. */ - drawInside: (const NXRect *) cellFrame inView: controlView { NXRect tempRect; [super drawInside: cellFrame inView: controlView]; tempRect = *cellFrame; tempRect.size.width = cellFrame->size.width / 6 - 12; [messageCount drawInside: &tempRect inView: controlView]; tempRect.origin.x += cellFrame->size.width / 6; [unreadCount drawInside: &tempRect inView: controlView]; tempRect.origin.x += cellFrame->size.width / 6; tempRect.size.width = cellFrame->size.width * 2.0 / 3.0; [name drawInside: &tempRect inView: controlView]; return self; } - copy { InboxCell *newCell = [super copy]; newCell->name = [name copy]; newCell->messageCount = [messageCount copy]; newCell->unreadCount = [unreadCount copy]; return newCell; } - free { if (name) [name free]; if (messageCount) [messageCount free]; if (unreadCount) [unreadCount free]; return [super free]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.