Added inbox to VoiceMob.

This commit is contained in:
GRMrGecko 2010-09-30 22:52:12 -05:00
parent d3e4f4bce2
commit 0f54277480
17 changed files with 1241 additions and 21 deletions

View File

@ -14,7 +14,7 @@
@class MGMInstance, MGMURLConnectionManager; @class MGMInstance, MGMURLConnectionManager;
#define MGMInboxDebug 0 #define MGMInboxDebug 1
extern NSString * const MGMIDelegate; extern NSString * const MGMIDelegate;
extern NSString * const MGMIDidReceiveInfo; extern NSString * const MGMIDidReceiveInfo;

View File

@ -40,6 +40,9 @@
- (MGMController *)controller; - (MGMController *)controller;
- (UIView *)view; - (UIView *)view;
- (UIToolbar *)toolbar;
- (NSArray *)accountsItems;
- (NSArray *)accountItems;
- (BOOL)isCurrent:(id)theUser; - (BOOL)isCurrent:(id)theUser;
- (void)setTitle:(NSString *)theTitle; - (void)setTitle:(NSString *)theTitle;

View File

@ -97,6 +97,15 @@ NSString * const MGMAccountsTitle = @"Accounts";
- (UIView *)view { - (UIView *)view {
return view; return view;
} }
- (UIToolbar *)toolbar {
return toolbar;
}
- (NSArray *)accountsItems {
return accountsItems;
}
- (NSArray *)accountItems {
return accountItems;
}
- (BOOL)isCurrent:(id)theUser { - (BOOL)isCurrent:(id)theUser {
return ([contactsControllers indexOfObject:theUser]==currentContactsController); return ([contactsControllers indexOfObject:theUser]==currentContactsController);

View File

@ -0,0 +1,23 @@
//
// MGMInboxMessageView.h
// VoiceMob
//
// Created by Mr. Gecko on 9/30/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import <UIKit/UIKit.h>
@class MGMInstance;
@interface MGMInboxMessageView : UITableViewCell {
MGMInstance *instance;
UILabel *nameField;
UILabel *dateField;
UILabel *messageField;
NSDictionary *messageData;
}
- (void)setInstance:(MGMInstance *)theInstance;
- (void)setMessageData:(NSDictionary *)theMessageData;
@end

View File

@ -0,0 +1,84 @@
//
// MGMInboxMessageView.m
// VoiceMob
//
// Created by Mr. Gecko on 9/30/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import "MGMInboxMessageView.h"
#import <VoiceBase.h>
@implementation MGMInboxMessageView
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
nameField = [[UILabel alloc] initWithFrame:CGRectZero];
[nameField setBackgroundColor:[UIColor clearColor]];
[nameField setFont:[UIFont boldSystemFontOfSize:18.0]];
[[self contentView] addSubview:nameField];
dateField = [[UILabel alloc] initWithFrame:CGRectZero];
[dateField setBackgroundColor:[UIColor clearColor]];
[dateField setFont:[UIFont systemFontOfSize:12.0]];
[dateField setTextAlignment:UITextAlignmentRight];
[dateField setTextColor:[UIColor blueColor]];
[[self contentView] addSubview:dateField];
messageField = [[UILabel alloc] initWithFrame:CGRectZero];
[messageField setBackgroundColor:[UIColor clearColor]];
[messageField setFont:[UIFont systemFontOfSize:12.0]];
[messageField setLineBreakMode:UILineBreakModeWordWrap];
[messageField setNumberOfLines:0];
[messageField setTextColor:[UIColor grayColor]];
[[self contentView] addSubview:messageField];
}
return self;
}
- (void)dealloc {
if (nameField!=nil)
[nameField release];
if (dateField!=nil)
[dateField release];
if (messageField!=nil)
[messageField release];
[super dealloc];
}
- (void)setInstance:(MGMInstance *)theInstance {
instance = theInstance;
}
- (void)setMessageData:(NSDictionary *)theMessageData {
if (messageData!=nil) [messageData release];
messageData = [theMessageData retain];
}
- (void)layoutSubviews {
[super layoutSubviews];
CGRect frameRect = [[self contentView] bounds];
if (messageField!=nil) {
[nameField setText:[[instance contacts] nameForNumber:[messageData objectForKey:MGMIPhoneNumber]]];
int type = [[messageData objectForKey:MGMIType] intValue];
if (type==MGMIVoicemailType) {
[messageField setText:[messageData objectForKey:MGMIText]];
} else if (type==MGMISMSIn || type==MGMISMSOut) {
[messageField setText:[[[[messageData objectForKey:MGMIMessages] lastObject] objectForKey:MGMIText] flattenHTML]];
} else {
[messageField setText:[[[messageData objectForKey:MGMIPhoneNumber] areaCode] areaCodeLocation]];
}
NSDate *today = [NSDate dateWithTimeIntervalSinceNow:-86400];
if ([[messageData objectForKey:MGMITime] earlierDate:today]==today) {
NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
[formatter setDateFormat:@"h:mm a"];
[dateField setText:[formatter stringFromDate:[messageData objectForKey:MGMITime]]];
} else {
NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
[formatter setDateFormat:@"M/d/yy"];
[dateField setText:[formatter stringFromDate:[messageData objectForKey:MGMITime]]];
}
}
[nameField setFrame:CGRectMake(8, 3, frameRect.size.width-74, 20)];
[dateField setFrame:CGRectMake(frameRect.size.width-64, 3, 60, 20)];
[messageField setFrame:CGRectMake(8, frameRect.size.height-35, frameRect.size.width-12, 32)];
}
@end

View File

@ -30,12 +30,14 @@
} }
- (UIView *)view { - (UIView *)view {
if (![[NSBundle mainBundle] loadNibNamed:[[UIDevice currentDevice] appendDeviceSuffixToString:@"VoiceContacts"] owner:self options:nil]) { if (view==nil) {
NSLog(@"Unable to load Voice Contacts"); if (![[NSBundle mainBundle] loadNibNamed:[[UIDevice currentDevice] appendDeviceSuffixToString:@"VoiceContacts"] owner:self options:nil]) {
[self release]; NSLog(@"Unable to load Voice Contacts");
self = nil; [self release];
} else { self = nil;
[super awakeFromNib]; } else {
[super awakeFromNib];
}
} }
return view; return view;
} }

View File

@ -0,0 +1,49 @@
//
// MGMVoiceInbox.h
// VoiceMob
//
// Created by Mr. Gecko on 9/30/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import <UIKit/UIKit.h>
@class MGMVoiceUser, MGMProgressView, MGMInstance;
@interface MGMVoiceInbox : NSObject {
MGMVoiceUser *voiceUser;
MGMInstance *instance;
IBOutlet UITableView *inboxesTable;
IBOutlet UITableView *messagesTable;
MGMProgressView *progressView;
NSArray *inboxItems;
NSArray *messagesItems;
int progressStartCount;
int currentInbox;
int maxResults;
unsigned int start;
int resultsCount;
float rightMax;
float leftMax;
NSMutableArray *currentData;
NSDate *lastDate;
}
+ (id)tabWithVoiceUser:(MGMVoiceUser *)theVoiceUser;
- (id)initWithVoiceUser:(MGMVoiceUser *)theVoiceUser;
- (MGMVoiceUser *)voiceUser;
- (UIView *)view;
- (void)releaseView;
- (void)startProgress;
- (void)stopProgress;
- (void)loadInbox;
- (int)currentInbox;
@end

View File

@ -0,0 +1,243 @@
//
// MGMVoiceInbox.m
// VoiceMob
//
// Created by Mr. Gecko on 9/30/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import "MGMVoiceInbox.h"
#import "MGMVoiceUser.h"
#import "MGMAccountController.h"
#import "MGMInboxMessageView.h"
#import "MGMProgressView.h"
#import "MGMVMAddons.h"
#import <VoiceBase.h>
static NSMutableArray *MGMInboxItems;
NSString * const MGMSName = @"name";
NSString * const MGMSID = @"id";
NSString * const MGMInboxesCellIdentifier = @"MGMInboxesCellIdentifier";
NSString * const MGMInboxMessageCellIdentifier = @"MGMInboxMessageCellIdentifier";
@implementation MGMVoiceInbox
+ (id)tabWithVoiceUser:(MGMVoiceUser *)theVoiceUser {
return [[[self alloc] initWithVoiceUser:theVoiceUser] autorelease];
}
- (id)initWithVoiceUser:(MGMVoiceUser *)theVoiceUser {
if (self = [super init]) {
if (MGMInboxItems==nil) {
MGMInboxItems = [NSMutableArray new];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Inbox", MGMSName, [NSNumber numberWithInt:0], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Starred", MGMSName, [NSNumber numberWithInt:1], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Spam", MGMSName, [NSNumber numberWithInt:2], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Trash", MGMSName, [NSNumber numberWithInt:3], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Voicemail", MGMSName, [NSNumber numberWithInt:4], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"SMS Messages", MGMSName, [NSNumber numberWithInt:5], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Recorded", MGMSName, [NSNumber numberWithInt:6], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Placed", MGMSName, [NSNumber numberWithInt:7], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Received", MGMSName, [NSNumber numberWithInt:8], MGMSID, nil]];
[MGMInboxItems addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Missed", MGMSName, [NSNumber numberWithInt:9], MGMSID, nil]];
}
voiceUser = theVoiceUser;
instance = [voiceUser instance];
maxResults = 10;
inboxItems = [[NSArray arrayWithObjects:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL] autorelease], [[[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:[voiceUser accountController] action:@selector(showSettings:)] autorelease], nil] retain];
messagesItems = [[NSArray arrayWithObjects:[[[UIBarButtonItem alloc] initWithTitle:@"Inboxes" style:UIBarButtonItemStyleBordered target:self action:@selector(showInboxes:)] autorelease], [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL] autorelease], [[[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:[voiceUser accountController] action:@selector(showSettings:)] autorelease], nil] retain];
currentData = [NSMutableArray new];
}
return self;
}
- (void)dealloc {
[self releaseView];
[super dealloc];
}
- (MGMVoiceUser *)voiceUser {
return voiceUser;
}
- (UIView *)view {
if (inboxesTable==nil) {
if (![[NSBundle mainBundle] loadNibNamed:[[UIDevice currentDevice] appendDeviceSuffixToString:@"VoiceInbox"] owner:self options:nil]) {
NSLog(@"Unable to load Voice Inbox");
[self release];
self = nil;
} else {
[[[voiceUser accountController] toolbar] setItems:inboxItems animated:YES];
CGSize contentSize = [[voiceUser tabView] frame].size;
progressView = [[MGMProgressView alloc] initWithFrame:CGRectMake(0, 0, contentSize.width, contentSize.height)];
[progressView setProgressTitle:@"Loading..."];
[progressView setHidden:(progressStartCount<=0)];
}
}
return inboxesTable;
}
- (void)releaseView {
if (inboxesTable!=nil) {
[inboxesTable release];
inboxesTable = nil;
}
if (messagesTable!=nil) {
[messagesTable release];
messagesTable = nil;
}
if (progressView!=nil) {
[progressView release];
progressView = nil;
}
}
- (void)startProgress {
if (progressView!=nil) {
if ([progressView superview]==nil)
[[voiceUser tabView] addSubview:progressView];
[progressView setHidden:NO];
[progressView startProgess];
[progressView becomeFirstResponder];
}
progressStartCount++;
}
- (void)stopProgress {
if (progressView!=nil) {
if (progressStartCount==1) {
[progressView setHidden:YES];
[progressView stopProgess];
}
}
progressStartCount--;
}
- (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section {
if (theTableView==inboxesTable)
return [MGMInboxItems count];
else if (theTableView==messagesTable)
return [currentData count];
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
if (theTableView==inboxesTable) {
cell = [inboxesTable dequeueReusableCellWithIdentifier:MGMInboxesCellIdentifier];
if (cell==nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MGMInboxesCellIdentifier] autorelease];
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
}
[cell setText:[[MGMInboxItems objectAtIndex:[indexPath indexAtPosition:1]] objectForKey:MGMSName]];
} else if (theTableView==messagesTable) {
cell = (MGMInboxMessageView *)[messagesTable dequeueReusableCellWithIdentifier:MGMInboxMessageCellIdentifier];
if (cell==nil) {
cell = [[[MGMInboxMessageView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MGMInboxMessageCellIdentifier] autorelease];
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
[cell setInstance:instance];
}
[cell setMessageData:[currentData objectAtIndex:[indexPath indexAtPosition:1]]];
}
return cell;
}
- (BOOL)tableView:(UITableView *)theTableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
if (theTableView==inboxesTable)
return NO;
return YES;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)theTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
- (NSString *)tableView:(UITableView *)theTableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"Delete";
}
- (void)tableView:(UITableView *)theTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
}
- (void)tableView:(UITableView *)theTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (theTableView==inboxesTable) {
currentInbox = [[[MGMInboxItems objectAtIndex:[indexPath indexAtPosition:1]] objectForKey:MGMSID] intValue];
[currentData removeAllObjects];
start = 0;
resultsCount = 0;
[self loadInbox];
[[messagesItems objectAtIndex:1] setEnabled:NO];
[[[voiceUser accountController] toolbar] setItems:messagesItems animated:YES];
CGRect inViewFrame = [messagesTable frame];
inViewFrame.origin.x += inViewFrame.size.width;
[messagesTable setFrame:inViewFrame];
[[voiceUser tabView] addSubview:messagesTable];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(messagesAnimationDidStop:finished:context:)];
[messagesTable setFrame:[inboxesTable frame]];
CGRect outViewFrame = [inboxesTable frame];
outViewFrame.origin.x -= outViewFrame.size.width;
[inboxesTable setFrame:outViewFrame];
[UIView commitAnimations];
}
}
- (void)messagesAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[inboxesTable removeFromSuperview];
[inboxesTable deselectRowAtIndexPath:[inboxesTable indexPathForSelectedRow] animated:NO];
[[messagesItems objectAtIndex:1] setEnabled:YES];
}
- (void)loadInbox {
int page = (start/maxResults)+1;
[self startProgress];
switch (currentInbox) {
case 0:
[[instance inbox] getInboxForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 1:
[[instance inbox] getStarredForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 2:
[[instance inbox] getSpamForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 3:
[[instance inbox] getTrashForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 4:
[[instance inbox] getVoicemailForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 5:
[[instance inbox] getSMSForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 6:
[[instance inbox] getRecordedCallsForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 7:
[[instance inbox] getPlacedCallsForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 8:
[[instance inbox] getReceivedCallsForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
case 9:
[[instance inbox] getMissedCallsForPage:page delegate:self didFailWithError:@selector(inbox:didFailWithError:instance:) didReceiveInfo:@selector(inboxGotInfo:instance:)];
break;
}
}
- (void)inbox:(NSDictionary *)theInfo didFailWithError:(NSError *)theError instance:(MGMInstance *)theInstance {
NSLog(@"Inbox Error: %@ for instance: %@", theError, theInstance);
UIAlertView *theAlert = [[UIAlertView new] autorelease];
[theAlert setTitle:@"Error loading inbox"];
[theAlert setMessage:[theError localizedDescription]];
[theAlert addButtonWithTitle:MGMOkButtonTitle];
[theAlert show];
[self stopProgress];
}
- (void)inboxGotInfo:(NSArray *)theInfo instance:(MGMInstance *)theInstance {
if (theInfo!=nil) {
[currentData addObjectsFromArray:theInfo];
[messagesTable reloadData];
} else {
NSLog(@"Error 234554: Hold on, this should never happen.");
}
[self stopProgress];
}
- (int)currentInbox {
return currentInbox;
}
@end

View File

@ -34,15 +34,17 @@
} }
- (UIView *)view { - (UIView *)view {
if (![[NSBundle mainBundle] loadNibNamed:[[UIDevice currentDevice] appendDeviceSuffixToString:@"VoicePad"] owner:self options:nil]) { if (view==nil) {
NSLog(@"Unable to load Voice Pad"); if (![[NSBundle mainBundle] loadNibNamed:[[UIDevice currentDevice] appendDeviceSuffixToString:@"VoicePad"] owner:self options:nil]) {
[self release]; NSLog(@"Unable to load Voice Pad");
self = nil; [self release];
} else { self = nil;
if (numberString!=nil) } else {
[numberView setNumber:numberString]; if (numberString!=nil)
else [numberView setNumber:numberString];
[numberView setNumber:@""]; else
[numberView setNumber:@""];
}
} }
return view; return view;
} }

View File

@ -0,0 +1,25 @@
//
// MGMVoiceSMS.h
// VoiceMob
//
// Created by Mr. Gecko on 9/30/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import <UIKit/UIKit.h>
@class MGMVoiceUser;
@interface MGMVoiceSMS : NSObject {
MGMVoiceUser *voiceUser;
IBOutlet UIView *view;
}
+ (id)tabWithVoiceUser:(MGMVoiceUser *)theVoiceUser;
- (id)initWithVoiceUser:(MGMVoiceUser *)theVoiceUser;
- (MGMVoiceUser *)voiceUser;
- (UIView *)view;
- (void)releaseView;
@end

View File

@ -0,0 +1,51 @@
//
// MGMVoiceSMS.m
// VoiceMob
//
// Created by Mr. Gecko on 9/30/10.
// Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/
//
#import "MGMVoiceSMS.h"
#import "MGMVoiceUser.h"
#import "MGMVMAddons.h"
#import <VoiceBase.h>
@implementation MGMVoiceSMS
+ (id)tabWithVoiceUser:(MGMVoiceUser *)theVoiceUser {
return [[[self alloc] initWithVoiceUser:theVoiceUser] autorelease];
}
- (id)initWithVoiceUser:(MGMVoiceUser *)theVoiceUser {
if (self = [super init]) {
voiceUser = theVoiceUser;
}
return self;
}
- (void)dealloc {
[self releaseView];
[super dealloc];
}
- (MGMVoiceUser *)voiceUser {
return voiceUser;
}
- (UIView *)view {
if (view==nil) {
if (![[NSBundle mainBundle] loadNibNamed:[[UIDevice currentDevice] appendDeviceSuffixToString:@"VoiceSMS"] owner:self options:nil]) {
NSLog(@"Unable to load Voice SMS");
[self release];
self = nil;
} else {
}
}
return view;
}
- (void)releaseView {
if (view!=nil) {
[view release];
view = nil;
}
}
@end

View File

@ -48,6 +48,8 @@
- (NSString *)areaCode; - (NSString *)areaCode;
- (UIView *)view; - (UIView *)view;
- (UIView *)tabView;
- (UITabBar *)tabBar;
- (void)releaseView; - (void)releaseView;
- (void)loginSuccessful; - (void)loginSuccessful;

View File

@ -9,6 +9,8 @@
#import "MGMVoiceUser.h" #import "MGMVoiceUser.h"
#import "MGMVoicePad.h" #import "MGMVoicePad.h"
#import "MGMVoiceContacts.h" #import "MGMVoiceContacts.h"
#import "MGMVoiceSMS.h"
#import "MGMVoiceInbox.h"
#import "MGMProgressView.h" #import "MGMProgressView.h"
#import "MGMAccountController.h" #import "MGMAccountController.h"
#import "MGMVMAddons.h" #import "MGMVMAddons.h"
@ -23,13 +25,16 @@
if (self = [super init]) { if (self = [super init]) {
accountController = theAccountController; accountController = theAccountController;
user = [theUser retain]; user = [theUser retain];
if ([user isStarted])
instance = [[MGMInstance instanceWithUser:user delegate:self] retain];
currentTab = 0; currentTab = 0;
tabObjects = [NSMutableArray new]; tabObjects = [NSMutableArray new];
[tabObjects addObject:[MGMVoicePad tabWithVoiceUser:self]]; [tabObjects addObject:[MGMVoicePad tabWithVoiceUser:self]];
[tabObjects addObject:[MGMVoiceContacts tabWithVoiceUser:self]]; [tabObjects addObject:[MGMVoiceContacts tabWithVoiceUser:self]];
[tabObjects addObject:[MGMVoiceSMS tabWithVoiceUser:self]];
if ([user isStarted]) [tabObjects addObject:[MGMVoiceInbox tabWithVoiceUser:self]];
instance = [[MGMInstance instanceWithUser:user delegate:self] retain];
} }
return self; return self;
} }
@ -83,6 +88,12 @@
} }
return view; return view;
} }
- (UIView *)tabView {
return tabView;
}
- (UITabBar *)tabBar {
return tabBar;
}
- (void)releaseView { - (void)releaseView {
if (view!=nil) { if (view!=nil) {
[view release]; [view release];
@ -202,6 +213,10 @@
int tabIndex = [[tabBar items] indexOfObject:item]; int tabIndex = [[tabBar items] indexOfObject:item];
if (tabIndex==currentTab) if (tabIndex==currentTab)
return; return;
if ([[accountController toolbar] items]!=[accountController accountItems]) {
[[accountController toolbar] setItems:[accountController accountItems] animated:YES];
}
id tab = [tabObjects objectAtIndex:currentTab]; id tab = [tabObjects objectAtIndex:currentTab];
currentTab = tabIndex; currentTab = tabIndex;
id newTab = [tabObjects objectAtIndex:currentTab]; id newTab = [tabObjects objectAtIndex:currentTab];

View File

@ -0,0 +1,407 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1024</int>
<string key="IBDocument.SystemVersion">10F569</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.29</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">117</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="5"/>
<integer value="6"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="278104675">
<nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 367}</string>
<object class="NSColor" key="IBUIBackgroundColor" id="408344973">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUITableView" id="970096905">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 367}</string>
<reference key="NSSuperview"/>
<reference key="IBUIBackgroundColor" ref="408344973"/>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<int key="IBUISeparatorStyle">1</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">40</float>
</object>
<object class="IBUITableView" id="808653018">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{320, 367}</string>
<reference key="NSSuperview"/>
<reference key="IBUIBackgroundColor" ref="408344973"/>
<bool key="IBUIClipsSubviews">YES</bool>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
<bool key="IBUIAlwaysBounceVertical">YES</bool>
<int key="IBUISeparatorStyle">1</int>
<int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
<bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
<float key="IBUIRowHeight">60</float>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">inboxesTable</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="970096905"/>
</object>
<int key="connectionID">7</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">messagesTable</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="808653018"/>
</object>
<int key="connectionID">8</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="808653018"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">dataSource</string>
<reference key="source" ref="970096905"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">10</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="970096905"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">11</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="808653018"/>
<reference key="destination" ref="372490531"/>
</object>
<int key="connectionID">12</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="278104675"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="970096905"/>
<reference key="parent" ref="0"/>
<string key="objectName">Inboxes</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="808653018"/>
<reference key="parent" ref="0"/>
<string key="objectName">Messages</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>3.IBEditorWindowLastContentRect</string>
<string>3.IBPluginDependency</string>
<string>5.IBEditorWindowLastContentRect</string>
<string>5.IBPluginDependency</string>
<string>6.IBEditorWindowLastContentRect</string>
<string>6.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>MGMVoiceInbox</string>
<string>UIResponder</string>
<string>{{558, 148}, {320, 367}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{42, 332}, {320, 367}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{63, 309}, {320, 367}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">12</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">MGMVoiceInbox</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>inboxesTable</string>
<string>messagesTable</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UITableView</string>
<string>UITableView</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>inboxesTable</string>
<string>messagesTable</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">inboxesTable</string>
<string key="candidateClassName">UITableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">messagesTable</string>
<string key="candidateClassName">UITableView</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/VoiceMob/Voice/MGMVoiceInbox.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="463661001">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="463661001"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIScrollView</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UITableView</string>
<string key="superclassName">UIScrollView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1024" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../../../VoiceMob.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">117</string>
</data>
</archive>

View File

@ -0,0 +1,279 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1024</int>
<string key="IBDocument.SystemVersion">10F569</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.29</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">117</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="3"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="372490531">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBProxyObject" id="975951072">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
<object class="IBUIView" id="355112807">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<string key="NSFrameSize">{322, 369}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="355112807"/>
</object>
<int key="connectionID">4</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="372490531"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="975951072"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="355112807"/>
<reference key="parent" ref="0"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>3.IBEditorWindowLastContentRect</string>
<string>3.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>MGMVoiceSMS</string>
<string>UIResponder</string>
<string>{{525, 191}, {322, 369}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">4</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">MGMVoiceSMS</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">view</string>
<string key="NS.object.0">UIView</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">view</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">view</string>
<string key="candidateClassName">UIView</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Classes/VoiceMob/Voice/MGMVoiceSMS.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="86538169">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<reference key="sourceIdentifier" ref="86538169"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="1024" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../../../VoiceMob.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">117</string>
</data>
</archive>

View File

@ -12,7 +12,7 @@
</object> </object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
<integer value="9"/> <integer value="8"/>
</object> </object>
<object class="NSArray" key="IBDocument.PluginDependencies"> <object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool> <bool key="EncodedWithXMLCoder">YES</bool>
@ -232,7 +232,7 @@
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{497, 127}, {320, 416}}</string> <string>{{620, 69}, {320, 416}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object> </object>

View File

@ -46,6 +46,11 @@
2A90693C1254CF040008461E /* SMS Themes in Resources */ = {isa = PBXBuildFile; fileRef = 2A9069071254CF040008461E /* SMS Themes */; }; 2A90693C1254CF040008461E /* SMS Themes in Resources */ = {isa = PBXBuildFile; fileRef = 2A9069071254CF040008461E /* SMS Themes */; };
2A90693D1254CF040008461E /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 2A9069321254CF040008461E /* Sounds */; }; 2A90693D1254CF040008461E /* Sounds in Resources */ = {isa = PBXBuildFile; fileRef = 2A9069321254CF040008461E /* Sounds */; };
2A906A041254D4BB0008461E /* blankicon.png in Resources */ = {isa = PBXBuildFile; fileRef = 2A906A031254D4BB0008461E /* blankicon.png */; }; 2A906A041254D4BB0008461E /* blankicon.png in Resources */ = {isa = PBXBuildFile; fileRef = 2A906A031254D4BB0008461E /* blankicon.png */; };
2A906BEF125522800008461E /* MGMVoiceSMS.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A906BEE125522800008461E /* MGMVoiceSMS.m */; };
2A906BF6125522D10008461E /* MGMVoiceInbox.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A906BF5125522D10008461E /* MGMVoiceInbox.m */; };
2A906BFD1255231F0008461E /* VoiceSMS_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A906BFC1255231F0008461E /* VoiceSMS_iPhone.xib */; };
2A906BFF1255232E0008461E /* VoiceInbox_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A906BFE1255232E0008461E /* VoiceInbox_iPhone.xib */; };
2A906CBA12554DA40008461E /* MGMInboxMessageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A906CB912554DA40008461E /* MGMInboxMessageView.m */; };
2ABD37AE1250D448004AAE00 /* AccountController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2ABD37AD1250D448004AAE00 /* AccountController_iPhone.xib */; }; 2ABD37AE1250D448004AAE00 /* AccountController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2ABD37AD1250D448004AAE00 /* AccountController_iPhone.xib */; };
2ABD380412513B26004AAE00 /* MGMAccountController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ABD380312513B26004AAE00 /* MGMAccountController.m */; }; 2ABD380412513B26004AAE00 /* MGMAccountController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ABD380312513B26004AAE00 /* MGMAccountController.m */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -129,6 +134,14 @@
2A9069071254CF040008461E /* SMS Themes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "SMS Themes"; sourceTree = "<group>"; }; 2A9069071254CF040008461E /* SMS Themes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "SMS Themes"; sourceTree = "<group>"; };
2A9069321254CF040008461E /* Sounds */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Sounds; sourceTree = "<group>"; }; 2A9069321254CF040008461E /* Sounds */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Sounds; sourceTree = "<group>"; };
2A906A031254D4BB0008461E /* blankicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blankicon.png; sourceTree = "<group>"; }; 2A906A031254D4BB0008461E /* blankicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blankicon.png; sourceTree = "<group>"; };
2A906BED125522800008461E /* MGMVoiceSMS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMVoiceSMS.h; sourceTree = "<group>"; };
2A906BEE125522800008461E /* MGMVoiceSMS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMVoiceSMS.m; sourceTree = "<group>"; };
2A906BF4125522D10008461E /* MGMVoiceInbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMVoiceInbox.h; sourceTree = "<group>"; };
2A906BF5125522D10008461E /* MGMVoiceInbox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMVoiceInbox.m; sourceTree = "<group>"; };
2A906BFC1255231F0008461E /* VoiceSMS_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VoiceSMS_iPhone.xib; sourceTree = "<group>"; };
2A906BFE1255232E0008461E /* VoiceInbox_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VoiceInbox_iPhone.xib; sourceTree = "<group>"; };
2A906CB812554DA40008461E /* MGMInboxMessageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMInboxMessageView.h; sourceTree = "<group>"; };
2A906CB912554DA40008461E /* MGMInboxMessageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMInboxMessageView.m; sourceTree = "<group>"; };
2ABD37AD1250D448004AAE00 /* AccountController_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AccountController_iPhone.xib; sourceTree = "<group>"; }; 2ABD37AD1250D448004AAE00 /* AccountController_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AccountController_iPhone.xib; sourceTree = "<group>"; };
2ABD380212513B25004AAE00 /* MGMAccountController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMAccountController.h; sourceTree = "<group>"; }; 2ABD380212513B25004AAE00 /* MGMAccountController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMAccountController.h; sourceTree = "<group>"; };
2ABD380312513B26004AAE00 /* MGMAccountController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMAccountController.m; sourceTree = "<group>"; }; 2ABD380312513B26004AAE00 /* MGMAccountController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMAccountController.m; sourceTree = "<group>"; };
@ -276,6 +289,10 @@
2A3170A612539BFA009998B6 /* MGMVoicePad.m */, 2A3170A612539BFA009998B6 /* MGMVoicePad.m */,
2A9067C9125430DA0008461E /* MGMVoiceContacts.h */, 2A9067C9125430DA0008461E /* MGMVoiceContacts.h */,
2A9067CA125430DA0008461E /* MGMVoiceContacts.m */, 2A9067CA125430DA0008461E /* MGMVoiceContacts.m */,
2A906BED125522800008461E /* MGMVoiceSMS.h */,
2A906BEE125522800008461E /* MGMVoiceSMS.m */,
2A906BF4125522D10008461E /* MGMVoiceInbox.h */,
2A906BF5125522D10008461E /* MGMVoiceInbox.m */,
); );
path = Voice; path = Voice;
sourceTree = "<group>"; sourceTree = "<group>";
@ -294,6 +311,8 @@
2A316C48125296A5009998B6 /* VoiceUser_iPhone.xib */, 2A316C48125296A5009998B6 /* VoiceUser_iPhone.xib */,
2A31708B1253987F009998B6 /* VoicePad_iPhone.xib */, 2A31708B1253987F009998B6 /* VoicePad_iPhone.xib */,
2A9067C61254302E0008461E /* VoiceContacts_iPhone.xib */, 2A9067C61254302E0008461E /* VoiceContacts_iPhone.xib */,
2A906BFC1255231F0008461E /* VoiceSMS_iPhone.xib */,
2A906BFE1255232E0008461E /* VoiceInbox_iPhone.xib */,
); );
path = Voice; path = Voice;
sourceTree = "<group>"; sourceTree = "<group>";
@ -307,6 +326,8 @@
2A316F0F1252FBED009998B6 /* MGMNumberView.m */, 2A316F0F1252FBED009998B6 /* MGMNumberView.m */,
2A90683E125436120008461E /* MGMContactView.h */, 2A90683E125436120008461E /* MGMContactView.h */,
2A90683F125436120008461E /* MGMContactView.m */, 2A90683F125436120008461E /* MGMContactView.m */,
2A906CB812554DA40008461E /* MGMInboxMessageView.h */,
2A906CB912554DA40008461E /* MGMInboxMessageView.m */,
); );
path = Views; path = Views;
sourceTree = "<group>"; sourceTree = "<group>";
@ -393,6 +414,8 @@
2A90693C1254CF040008461E /* SMS Themes in Resources */, 2A90693C1254CF040008461E /* SMS Themes in Resources */,
2A90693D1254CF040008461E /* Sounds in Resources */, 2A90693D1254CF040008461E /* Sounds in Resources */,
2A906A041254D4BB0008461E /* blankicon.png in Resources */, 2A906A041254D4BB0008461E /* blankicon.png in Resources */,
2A906BFD1255231F0008461E /* VoiceSMS_iPhone.xib in Resources */,
2A906BFF1255232E0008461E /* VoiceInbox_iPhone.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -417,6 +440,9 @@
2A9067CB125430DA0008461E /* MGMVoiceContacts.m in Sources */, 2A9067CB125430DA0008461E /* MGMVoiceContacts.m in Sources */,
2A9067CE125431010008461E /* MGMContactsController.m in Sources */, 2A9067CE125431010008461E /* MGMContactsController.m in Sources */,
2A906840125436130008461E /* MGMContactView.m in Sources */, 2A906840125436130008461E /* MGMContactView.m in Sources */,
2A906BEF125522800008461E /* MGMVoiceSMS.m in Sources */,
2A906BF6125522D10008461E /* MGMVoiceInbox.m in Sources */,
2A906CBA12554DA40008461E /* MGMInboxMessageView.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };