The following is the old NSApplescript, which works to create array of mailbox
paths.
NSAppleScript *theScript = [[[NSAppleScript alloc]initWithSource:@"tell
application \"Mail\"\n set localMailboxes to every mailbox\n end
tell\n"]autorelease];
NSDictionary *theError;
NSAppleEventDescriptor *theScriptDescriptor = [theScript executeAndReturnError:
&theError];
if (theScriptDescriptor == nil) {
} else {
NSString *descriptorString;
int i, u = [theScriptDescriptor numberOfItems];
for (i = 1; i<=u; i++) {
descriptorString = [[[theScriptDescriptor
descriptorAtIndex:i]paramDescriptorForKeyword:(AEKeyword)'seld']stringValue];
if (descriptorString == NULL) {
} else {
[mailboxes_File addObject:descriptorString];
}
}
}
I am trying to substitute Scripting Bridge code with some difficulty.
Iterating through containers, see the following, is slow by comparison to the
foregoing NSApplescript. The container hierarchy involved goes down 6 levels.
-(MailMailbox *)returnTheContainer:(MailMailbox *)incoming_Container
{
MailMailbox *returnedContainer = [incoming_Container container];
return returnedContainer;
}
SBElementArray *allMailboxes = [mailApp mailboxes];
int countOfAllMailboxes = [allMailboxes count];
int i;
for (i = 0; i < countOfAllMailboxes; i++) {
NSString *mailboxName = [[allMailboxes objectAtIndex:i]name];
MailMailbox *returnedContainer = [[allMailboxes objectAtIndex:i]container];
BOOL allContainersFound = NO;
NSMutableString *returnedPathName = [NSMutableString string];
[returnedPathName appendString:mailboxName];
if ([returnedContainer name] == NULL) {
allContainersFound = YES;
} else {
[returnedPathName insertString:@"/" atIndex:0];
[returnedPathName insertString:[returnedContainer name] atIndex:0];
}
while (allContainersFound == NO) {
returnedContainer = [self returnTheContainer:(MailMailbox
*)returnedContainer];
if ([returnedContainer name] == NULL) {
allContainersFound = YES;
} else {
NSString *returnedName = [returnedContainer name];
[returnedPathName insertString:@"/" atIndex:0];
[returnedPathName insertString:returnedName atIndex:0];
}
}
[mailboxes_File addObject:returnedPathName];
}
I have looked at the SBOject class and tried the the following with 'seld',
which returns null (I could be using it wrong also):
- (SBObject *) propertyWithCode:(AEKeyword)code;
Anyone have any experience in returning the full path directly from the
MailMailbox or a way of speeding this up?
Best regards,
John MacMullin
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]