VoiceMac/Classes/VoiceMac/MGMNumberOptions.m
2010-09-20 19:44:17 -05:00

116 lines
3.8 KiB
Objective-C

//
// MGMNumberOptions.m
// VoiceMac
//
// Created by Mr. Gecko on 9/6/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import "MGMNumberOptions.h"
#import "MGMController.h"
#import "MGMVoiceUser.h"
#import "MGMSIPUser.h"
#import <VoiceBase/VoiceBase.h>
#import <MGMUsers/MGMUsers.h>
@implementation MGMNumberOptions
- (id)initWithContactsController:(MGMContactsController *)theContactsController controller:(MGMController *)theController number:(NSString *)theNumber {
if (self = [super init]) {
if (![NSBundle loadNibNamed:@"NumberOptions" owner:self]) {
NSLog(@"Unable to load the Number Options Window");
[self release];
self = nil;
} else {
contactsController = theContactsController;
controller = theController;
[phoneField setStringValue:[theNumber readableNumber]];
NSString *name = [[contactsController contacts] nameForNumber:theNumber];
if (name==nil || [name isEqual:[phoneField stringValue]]) {
whitePages = [MGMWhitePages new];
[whitePages reverseLookup:theNumber delegate:self];
[nameField setStringValue:@"Loading..."];
} else {
[nameField setStringValue:name];
}
if (![contactsController respondsToSelector:@selector(sms:)])
[smsButton setEnabled:NO];
[self updateAccounts];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateAccounts) name:MGMContactsControllersChangedNotification object:nil];
[optionsWindow makeKeyAndOrderFront:self];
}
}
return self;
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
if (whitePages!=nil)
[whitePages release];
[super dealloc];
}
- (void)updateAccounts {
NSArray *contactsControllers = [controller contactsControllers];
NSMenu *accounts = [[NSMenu new] autorelease];
int currentAccount = -1;
for (int i=0; i<[contactsControllers count]; i++) {
NSMenuItem *item = [[NSMenuItem new] autorelease];
[item setTitle:[[contactsControllers objectAtIndex:i] menuTitle]];
if ([contactsControllers objectAtIndex:i]==contactsController)
currentAccount = i;
if (i<10)
[item setKeyEquivalent:[[NSNumber numberWithInt:i+1] stringValue]];
[item setTag:i];
[item setTarget:self];
[item setAction:@selector(setAccount:)];
[accounts addItem:item];
}
if (currentAccount==-1) {
currentAccount = 0;
contactsController = [[controller contactsControllers] objectAtIndex:currentAccount];
if (![contactsController respondsToSelector:@selector(sms:)])
[smsButton setEnabled:NO];
else
[smsButton setEnabled:YES];
}
[accountPopUp setMenu:accounts];
[accountPopUp selectItemAtIndex:currentAccount];
}
- (IBAction)setAccount:(id)sender {
contactsController = [[controller contactsControllers] objectAtIndex:[sender tag]];
if (![contactsController respondsToSelector:@selector(sms:)])
[smsButton setEnabled:NO];
else
[smsButton setEnabled:YES];
}
- (IBAction)call:(id)sender {
[contactsController showContactsWindow];
[[contactsController phoneField] setStringValue:[phoneField stringValue]];
[contactsController call:sender];
[self cancel:sender];
}
- (IBAction)sms:(id)sender {
if ([contactsController respondsToSelector:@selector(sms:)]) {
[contactsController showContactsWindow];
[[contactsController phoneField] setStringValue:[phoneField stringValue]];
[contactsController sms:sender];
[self cancel:sender];
}
}
- (IBAction)cancel:(id)sender {
if (whitePages!=nil)
[whitePages cancelAll];
[optionsWindow close];
[self release];
}
- (void)reverseLookupDidFindInfo:(NSDictionary *)theInfo forRequest:(NSDictionary *)theRequest {
if ([theInfo objectForKey:MGMWPName]!=nil) {
[nameField setStringValue:[theInfo objectForKey:MGMWPName]];
} else if ([theInfo objectForKey:MGMWPLocation]!=nil) {
[nameField setStringValue:[theInfo objectForKey:MGMWPLocation]];
}
}
@end