This is MailController.m in view mode; [Download] [Up]
#import "EnhancedText.h"
#import "EmacsText.h"
#import "TokenString.h"
#import "MailController.h"
#import "MailMessage.h"
#import "MailFromFile.h"
#import "NeXTMail.h"
#import "UnixScript.h"
#import "MSMail.h"
#import "MIMEMail.h"
#import "FileShelfView.h"
@implementation MailController
- init
{
[super init];
[self setDocType: "send"];
MUA = [[StringStorage alloc] init: "MailEnclosure (0.01)"];
MTA = [[StringStorage alloc] init: "/usr/lib/sendmail"];
return self;
}
- free
{
[MUA free];
[MTA free];
return [super free];
}
- awakeFromNib
{
[self empty];
[[shelf window] makeKeyAndOrderFront: self];
[ccField setNextText: text]; /* I have to do this here since setText broke connections */
return self;
}
- empty
{
[self selectType: [typeList itemList]];
[toField setStringValue: ""];
[ccField setStringValue: ""];
[subjectField setStringValue: ""];
[text empty: self];
[shelf empty];
[toField selectText: self];
return self;
}
- deliver:sender
{
id mailMessage = nil;
switch([[[typeList itemList] selectedCell] tag])
{
case 0: /* plain text */
mailMessage = [[MailFromFile alloc] initForMUA: [MUA stringValue] andMTA: [MTA stringValue]];
break;
case 1: /* Unix script */
mailMessage = [[UnixScript alloc] initForMUA: [MUA stringValue] andMTA: [MTA stringValue]];
break;
case 2: /* MSMail */
mailMessage = [[MSMail alloc] initForMUA: [MUA stringValue] andMTA: [MTA stringValue]];
break;
case 3: /* NeXTMail */
mailMessage = [[NeXTMail alloc] initForMUA: [MUA stringValue] andMTA: [MTA stringValue]];
break;
case 4: /* MIME */
mailMessage = [[MIMEMail alloc] initForMUA: [MUA stringValue] andMTA: [MTA stringValue]];
break;
default:
break;
}
if(!mailMessage)
{
NXLogError("Unsupported type\n");
return nil;
}
if([mailMessage supportsAttachments])
[mailMessage setAttachments: [shelf fileNames]];
[mailMessage deliverTo: [toField stringValue]
subject: [subjectField stringValue]
cc: [ccField stringValue]
text: [text stringValue]];
[panel orderOut: self];
[self empty];
[mailMessage free];
return self;
}
- selectType: sender
{
int tag = [[sender selectedCell] tag];
NXLogError("PopUp tag: %d", tag);
switch(tag)
{
case 0:
[shelf setEnabled: NO];
break;
default:
[shelf setEnabled: YES];
break;
}
return self;
}
- setTypeList: anObject
{
/* select first item in matrix and on button */
typeList = [anObject target];
[typeList setTarget: self];
[typeList setAction: @selector(selectType:)];
[[typeList itemList] selectCellWithTag: 0];
[anObject setTitle: [[[typeList itemList] selectedCell] title]];
return self;
}
/* I need to place an EmacsText in a ScrollView. But Grouping in IB
* creates one that can not be resized. So I just swap out one
* from a ScrollView/Text pulled right from the IB Palette.
*/
- setText: anObject
{
id origText = [anObject docView]; /* get the TeXT IB put in the scroller */
id newText;
NXRect theRect;
[origText getFrame: &theRect]; /* get its frame */
/* create an EmacsText using that Rect */
newText = [[EmacsText alloc] initFrame: &theRect];
[anObject setDocView: newText]; /* set it as the scrollers docView */
text = newText; /* get the pointer for later use */
[origText free]; /* free the one IB put in there. */
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.