Added support for iPhone to MGMFFmpeg. Updated settings in Theme Tester. Updated settings in VoiceMac for the Theme Manager. Added the ability to hide icons in themes. Added the ability to change the font in themes. Fixed issue in MGMAddressBook where getting group members is not accurate. Made it so SIP addresses and Email addresses would not be recognized as phone numbers. Added support for 2 step verification. Added the ability to reload the user phone numbers. Added the ability to place the next message at any point in the previous message. Added the ability to do css based on the class of the message view with %MESSAGECLASSES%. Added the ability to get the codecs available and change the top codec in MGMSIP. Made it stop ring back before hanging up. Added initWithRootElement: to MGMXMLDocument. Added initWithName: and initWithName:stringValue: to MGMXMLElement. Added initWithKind:, setStringValue:, and fixed issues with reading attributes value. Made MGMVoiceUser support 2 step verification API, reload the user phones when it becomes active, and display a message if there is no phone numbers in Google Voice. Fixed issue where Google Chat will not appear in the User Phones list. Added a 2 Step Verification Dialog. Added Codec selection in MGMSIPPane. Fixed issues with MGMMultiSMS where it wouldn't alert the user if the message was blank and it wouldn't make the text field non editable. Added support for new SMS protocol to MGMSMSMessageView. Added support in the FFmpeg install script to build for iOS. Added ability to compile for the Simulator only in the PJProject build script. Made iOS and Mac OS final path go to 2 different folders. Updated to Revision 3466 of PJProject.
This commit is contained in:
parent
6c767c3082
commit
62734d7fef
@ -176,7 +176,13 @@ typedef struct AVInputFile {
|
||||
int nb_streams; /* nb streams we are aware of */
|
||||
} AVInputFile;
|
||||
|
||||
@interface MGMFFmpeg : NSObject <NSApplicationDelegate> {
|
||||
@interface MGMFFmpeg : NSObject
|
||||
#if !TARGET_OS_IPHONE
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSApplicationDelegate>
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
id<MGMFFmpegDelegate> delegate;
|
||||
|
||||
char **opt_names;
|
||||
@ -340,7 +346,9 @@ typedef struct AVInputFile {
|
||||
double previousTime;
|
||||
|
||||
BOOL stopConverting;
|
||||
#if !TARGET_OS_IPHONE
|
||||
BOOL stoppedByQuit;
|
||||
#endif
|
||||
BOOL isConverting;
|
||||
|
||||
OptionDef options[102];
|
||||
@ -361,5 +369,9 @@ typedef struct AVInputFile {
|
||||
- (void)setInputFile:(NSString *)theFile;
|
||||
- (void)setInputHandle:(NSFileHandle *)theHandle;
|
||||
- (void)startConverting;
|
||||
|
||||
#if !TARGET_OS_IPHONE
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
|
||||
#endif
|
||||
@end
|
||||
#endif
|
@ -181,7 +181,9 @@ static BOOL FFmpegRegistered = NO;
|
||||
input_tmp = NULL;
|
||||
|
||||
stopConverting = NO;
|
||||
#if !TARGET_OS_IPHONE
|
||||
stoppedByQuit = NO;
|
||||
#endif
|
||||
isConverting = NO;
|
||||
|
||||
options[0] = (OptionDef){ "f", HAS_ARG, {@selector(opt_format:)}, "force format", "fmt" };
|
||||
@ -3963,6 +3965,7 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if !TARGET_OS_IPHONE
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
|
||||
if (isConverting) {
|
||||
stopConverting = YES;
|
||||
@ -3971,6 +3974,7 @@ fail:
|
||||
}
|
||||
return NSTerminateNow;
|
||||
}
|
||||
#endif
|
||||
|
||||
- (void)startConverting {
|
||||
[NSThread detachNewThreadSelector:@selector(startConvertingBackground) toTarget:self withObject:nil];
|
||||
@ -4007,8 +4011,10 @@ fail:
|
||||
cleanup:
|
||||
isConverting = NO;
|
||||
stopConverting = NO;
|
||||
#if !TARGET_OS_IPHONE
|
||||
if (stoppedByQuit)
|
||||
[[NSApplication sharedApplication] replyToApplicationShouldTerminate:YES];
|
||||
#endif
|
||||
if ([delegate respondsToSelector:@selector(conversionFinished)])
|
||||
[delegate conversionFinished];
|
||||
[pool drain];
|
||||
|
@ -21,7 +21,11 @@
|
||||
|
||||
@class WebView, MGMThemeManager;
|
||||
|
||||
@interface MGMThemeTesterController : NSObject {
|
||||
@interface MGMThemeTesterController : NSObject
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSWindowDelegate>
|
||||
#endif
|
||||
{
|
||||
NSPipe *errorPipe;
|
||||
IBOutlet NSTextView *errorConsole;
|
||||
IBOutlet NSWindow *errorConsoleWindow;
|
||||
@ -41,6 +45,10 @@
|
||||
IBOutlet NSTextField *IDField;
|
||||
IBOutlet NSTextField *messageField;
|
||||
IBOutlet NSPopUpButton *variantsButton;
|
||||
IBOutlet NSTextField *fontPreview;
|
||||
IBOutlet NSButton *headerButton;
|
||||
IBOutlet NSButton *footerButton;
|
||||
IBOutlet NSButton *iconsButton;
|
||||
}
|
||||
- (IBAction)open:(id)sender;
|
||||
- (IBAction)save:(id)sender;
|
||||
@ -50,6 +58,11 @@
|
||||
- (IBAction)chooseYPhoto:(id)sender;
|
||||
- (IBAction)chooseTPhoto:(id)sender;
|
||||
|
||||
- (IBAction)selectFont:(id)sender;
|
||||
- (IBAction)header:(id)sender;
|
||||
- (IBAction)footer:(id)sender;
|
||||
- (IBAction)icons:(id)sender;
|
||||
|
||||
- (IBAction)rebuild:(id)sender;
|
||||
- (IBAction)incoming:(id)sender;
|
||||
- (IBAction)outgoing:(id)sender;
|
||||
|
@ -48,12 +48,21 @@
|
||||
[messages addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"That sounds good.", MGMIText, @"6:06 PM", MGMITime, [NSNumber numberWithBool:YES], MGMIYou, nil]];
|
||||
[messages addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Great, meet you then.", MGMIText, @"6:07 PM", MGMITime, [NSNumber numberWithBool:NO], MGMIYou, nil]];
|
||||
[[SMSView mainFrame] loadHTMLString:@"<div style=\"text-align: center; font-size: 14pt; font-weight: bold;\">Please open a theme to preview it.</div>" baseURL:nil];
|
||||
themeManager = [MGMThemeManager new];
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSFont *font = [NSFont fontWithName:[defaults objectForKey:MGMTFontName] size:[defaults integerForKey:MGMTFontSize]];
|
||||
[fontPreview setFont:font];
|
||||
[fontPreview setStringValue:[NSString stringWithFormat:@"%@ %d", [font fontName], (int)[font pointSize]]];
|
||||
|
||||
[headerButton setState:([defaults boolForKey:MGMTShowHeader] ? NSOnState : NSOffState)];
|
||||
[footerButton setState:([defaults boolForKey:MGMTShowFooter] ? NSOnState : NSOffState)];
|
||||
[iconsButton setState:([defaults boolForKey:MGMTShowIcons] ? NSOnState : NSOffState)];
|
||||
[mainWindow makeKeyAndOrderFront:self];
|
||||
}
|
||||
- (IBAction)open:(id)sender {
|
||||
NSOpenPanel *panel = [NSOpenPanel openPanel];
|
||||
[panel setCanChooseFiles:YES];
|
||||
[panel setCanChooseDirectories:NO];
|
||||
[panel setCanChooseDirectories:YES];
|
||||
[panel setResolvesAliases:YES];
|
||||
[panel setAllowsMultipleSelection:NO];
|
||||
[panel setAllowedFileTypes:[NSArray arrayWithObject:@"vmt"]];
|
||||
@ -64,7 +73,7 @@
|
||||
[defaults setObject:[[[panel URL] path] stringByDeletingLastPathComponent] forKey:MGMTCurrentThemePath];
|
||||
[defaults setObject:[[[panel URL] path] lastPathComponent] forKey:MGMTCurrentThemeName];
|
||||
[defaults setObject:[NSNumber numberWithInt:0] forKey:MGMTCurrentThemeVariant];
|
||||
if (themeManager!=nil) [themeManager release];
|
||||
[themeManager release];
|
||||
NSLog(@"Loading Theme Manager");
|
||||
themeManager = [MGMThemeManager new];
|
||||
if (themeManager!=nil) {
|
||||
@ -157,6 +166,42 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)selectFont:(id)sender {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSFontManager *fontManager = [NSFontManager sharedFontManager];
|
||||
|
||||
NSFontPanel *fontPanel = [fontManager fontPanel:YES];
|
||||
[fontPanel setDelegate:self];
|
||||
[fontPanel setPanelFont:[NSFont fontWithName:[defaults objectForKey:MGMTFontName] size:[defaults integerForKey:MGMTFontSize]] isMultiple:NO];
|
||||
[fontPanel makeKeyAndOrderFront:self];
|
||||
}
|
||||
- (void)changeFont:(id)sender {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSFont *font = [sender convertFont:[NSFont fontWithName:[defaults objectForKey:MGMTFontName] size:[defaults integerForKey:MGMTFontSize]]];
|
||||
[defaults setObject:[font fontName] forKey:MGMTFontName];
|
||||
[defaults setInteger:(int)[font pointSize] forKey:MGMTFontSize];
|
||||
[fontPreview setFont:font];
|
||||
[fontPreview setStringValue:[NSString stringWithFormat:@"%@ %d", [font fontName], (int)[font pointSize]]];
|
||||
}
|
||||
- (void)windowWillClose:(NSNotification *)notification {
|
||||
[self rebuild:self];
|
||||
}
|
||||
- (void)windowDidResignKey:(NSNotification *)notification {
|
||||
[[notification object] close];
|
||||
}
|
||||
- (IBAction)header:(id)sender {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:([headerButton state]==NSOnState) forKey:MGMTShowHeader];
|
||||
[self rebuild:self];
|
||||
}
|
||||
- (IBAction)footer:(id)sender {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:([footerButton state]==NSOnState) forKey:MGMTShowFooter];
|
||||
[self rebuild:self];
|
||||
}
|
||||
- (IBAction)icons:(id)sender {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:([iconsButton state]==NSOnState) forKey:MGMTShowIcons];
|
||||
[self rebuild:self];
|
||||
}
|
||||
|
||||
- (IBAction)rebuild:(id)sender {
|
||||
if (themeManager!=nil) {
|
||||
[themeManager setVariant:[variantsButton titleOfSelectedItem]];
|
||||
@ -181,23 +226,33 @@
|
||||
tPhotoPath = [[tPhotoField stringValue] filePath];
|
||||
NSMutableDictionary *message = [NSMutableDictionary dictionaryWithDictionary:theMessage];
|
||||
[message setObject:[[NSNumber numberWithInt:[messages count]-1] stringValue] forKey:MGMIID];
|
||||
NSMutableArray *classes = [NSMutableArray array];
|
||||
int type = 1;
|
||||
if ([[message objectForKey:MGMIYou] boolValue]) {
|
||||
[classes addObject:MGMTCOutgoing];
|
||||
type = ([[[messages objectAtIndex:[[message objectForKey:MGMIID] intValue]-1] objectForKey:MGMIYou] boolValue] ? 2 : 1);
|
||||
if (type==2)
|
||||
[classes addObject:MGMTCNext];
|
||||
NSLog(@"Adding Outgoing %@", (type==1 ? @"Content" : @"Next Content"));
|
||||
[message setObject:yPhotoPath forKey:MGMTPhoto];
|
||||
[message setObject:NSFullUserName() forKey:MGMTName];
|
||||
[message setObject:[messageInfo objectForKey:MGMTUserNumber] forKey:MGMIPhoneNumber];
|
||||
} else {
|
||||
[classes addObject:MGMTCIncoming];
|
||||
type = ([[[messages objectAtIndex:[[message objectForKey:MGMIID] intValue]-1] objectForKey:MGMIYou] boolValue] ? 3 : 4);
|
||||
if (type==4)
|
||||
[classes addObject:MGMTCNext];
|
||||
NSLog(@"Adding Incoming %@", (type==3 ? @"Content" : @"Next Content"));
|
||||
[message setObject:tPhotoPath forKey:MGMTPhoto];
|
||||
[message setObject:[messageInfo objectForKey:MGMTInName] forKey:MGMTName];
|
||||
[message setObject:[messageInfo objectForKey:MGMIPhoneNumber] forKey:MGMIPhoneNumber];
|
||||
}
|
||||
[classes addObject:MGMTCMessage];
|
||||
if (![[NSUserDefaults standardUserDefaults] boolForKey:MGMTShowIcons])
|
||||
[classes addObject:MGMTCHideIcons];
|
||||
NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
|
||||
[formatter setDateFormat:[[themeManager variant] objectForKey:MGMTDate]];
|
||||
[SMSView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"newMessage('%@', '%@', '%@', %@, '%@', '%@', '%@', %d);", [[message objectForKey:MGMIText] javascriptEscape], [[message objectForKey:MGMTPhoto] javascriptEscape], [[message objectForKey:MGMITime] javascriptEscape], [message objectForKey:MGMIID], [[message objectForKey:MGMTName] javascriptEscape], [[[message objectForKey:MGMIPhoneNumber] readableNumber] javascriptEscape], [formatter stringFromDate:[messageInfo objectForKey:MGMITime]], type]];
|
||||
[SMSView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"newMessage('%@', '%@', '%@', %@, '%@', '%@', '%@', %d, '%@');", [[themeManager htmlTextFromMessage:message] javascriptEscape], [[message objectForKey:MGMTPhoto] javascriptEscape], [[message objectForKey:MGMITime] javascriptEscape], [message objectForKey:MGMIID], [[message objectForKey:MGMTName] javascriptEscape], [[[message objectForKey:MGMIPhoneNumber] readableNumber] javascriptEscape], [formatter stringFromDate:[messageInfo objectForKey:MGMITime]], type, [classes componentsJoinedByString:@" "]]];
|
||||
[SMSView stringByEvaluatingJavaScriptFromString:@"scrollToBottom();"];
|
||||
}
|
||||
- (IBAction)incoming:(id)sender {
|
||||
|
@ -17,11 +17,9 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AddressBook/ABAddressBook.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
|
||||
@protocol MGMContactsDelegate, MGMContactsOwnerDelegate;
|
||||
|
@ -212,9 +212,9 @@
|
||||
NSString *name = [(NSString *)ABRecordCopyValue(abGroup, kABGroupNameProperty) autorelease];
|
||||
NSArray *people = [(NSArray *)ABGroupCopyArrayOfAllMembers(abGroup) autorelease];
|
||||
NSMutableArray *groupMembers = [NSMutableArray array];
|
||||
for (unsigned int p=0; p<[people count]; p++) {
|
||||
for (unsigned int m=0; m<[people count]; m++) {
|
||||
if (shouldStop) break;
|
||||
ABRecordRef person = [people objectAtIndex:i];
|
||||
ABRecordRef person = [people objectAtIndex:m];
|
||||
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
|
||||
if (phones!=NULL) {
|
||||
if (shouldStop) break;
|
||||
@ -239,9 +239,9 @@
|
||||
NSString *name = [abGroup valueForProperty:kABGroupNameProperty];
|
||||
NSArray *people = [abGroup members];
|
||||
NSMutableArray *groupMembers = [NSMutableArray array];
|
||||
for (unsigned int p=0; p<[people count]; p++) {
|
||||
for (unsigned int m=0; m<[people count]; m++) {
|
||||
if (shouldStop) break;
|
||||
ABPerson *person = [people objectAtIndex:p];
|
||||
ABPerson *person = [people objectAtIndex:m];
|
||||
if ([person valueForProperty:kABPhoneProperty]!=nil) {
|
||||
ABMultiValue *phones = [person valueForProperty:kABPhoneProperty];
|
||||
for (int p=0; p<[phones count]; p++) {
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@protocol MGMContactsProtocol, MGMContactsOwnerDelegate;
|
||||
@class MGMUser, MGMLiteConnection;
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
extern NSString * const MGMCRecallError;
|
||||
extern NSString * const MGMCRecallSender;
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MGMUser, MGMURLConnectionManager;
|
||||
@protocol MGMContactsDelegate, MGMContactsOwnerDelegate;
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#if MGMSIPENABLED
|
||||
#import <pjsua-lib/pjsua.h>
|
||||
#endif
|
||||
|
@ -217,6 +217,8 @@
|
||||
return number;
|
||||
}
|
||||
- (NSString *)readableNumber {
|
||||
if ([self rangeOfString:@"@"].location!=NSNotFound)
|
||||
return self;
|
||||
NSString *number = [[self removePhoneWhiteSpace] littersToNumbers];
|
||||
if (![number hasPrefix:@"011"]) {
|
||||
if ([number length]==10) {
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MGMDelegateInfo, MGMInstance, MGMURLConnectionManager;
|
||||
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class MGMInstance, MGMUser, MGMHTTPCookieStorage, MGMURLConnectionManager, MGMWhitePages, MGMInbox, MGMContacts;
|
||||
|
||||
@ -29,10 +25,12 @@
|
||||
|
||||
extern NSString * const MGMVoiceIndexURL;
|
||||
extern NSString * const MGMLoginURL;
|
||||
extern NSString * const MGMLoginVerifyURL;
|
||||
extern NSString * const MGMLoginBody;
|
||||
extern NSString * const MGMXPCPath;
|
||||
extern NSString * const MGMCheckPath;
|
||||
extern NSString * const MGMCreditURL;
|
||||
extern NSString * const MGMPhonesURL;
|
||||
extern NSString * const MGMCallURL;
|
||||
extern NSString * const MGMCallCancelURL;
|
||||
|
||||
@ -63,12 +61,14 @@ extern NSString * const MGMUCVoicemail;
|
||||
|
||||
@protocol MGMInstanceDelegate <NSObject>
|
||||
- (void)loginError:(NSError *)theError;
|
||||
- (void)loginVerificationRequested;
|
||||
- (void)loginSuccessful;
|
||||
- (void)updatedContacts;
|
||||
- (void)updatedUserPhones;
|
||||
- (void)updateUnreadCount:(int)theCount;
|
||||
- (void)updateVoicemail;
|
||||
- (void)updateSMS;
|
||||
- (void)updateCredit:(NSString *)credit;
|
||||
- (void)updateCredit:(NSString *)theCredit;
|
||||
@end
|
||||
|
||||
@interface MGMInstance : NSObject {
|
||||
@ -81,6 +81,7 @@ extern NSString * const MGMUCVoicemail;
|
||||
|
||||
int webLoginTries;
|
||||
BOOL loggedIn;
|
||||
NSMutableDictionary *verificationParameters;
|
||||
|
||||
NSString *XPCURL;
|
||||
NSString *XPCCD;
|
||||
@ -123,7 +124,11 @@ extern NSString * const MGMUCVoicemail;
|
||||
- (NSArray *)userPhoneNumbers;
|
||||
- (NSDictionary *)unreadCounts;
|
||||
|
||||
- (void)cancelVerification;
|
||||
- (void)verifyWithCode:(NSString *)theCode;
|
||||
- (BOOL)isLoggedIn;
|
||||
- (void)checkPhones;
|
||||
- (void)parseUserPhones:(NSDictionary *)thePhones;
|
||||
- (void)checkTimer;
|
||||
- (void)creditTimer;
|
||||
|
||||
|
@ -23,15 +23,18 @@
|
||||
#import "MGMContacts.h"
|
||||
#import "MGMAddressBook.h"
|
||||
#import "MGMAddons.h"
|
||||
#import "MGMXML.h"
|
||||
#import <MGMUsers/MGMUsers.h>
|
||||
|
||||
NSString * const MGMVoiceBaseCopyright = @"Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/";
|
||||
|
||||
NSString * const MGMVoiceIndexURL = @"https://www.google.com/voice/#inbox";
|
||||
NSString * const MGMLoginURL = @"https://www.google.com/accounts/ServiceLoginAuth";
|
||||
NSString * const MGMLoginVerifyURL = @"https://www.google.com/accounts/SmsAuth?persistent=yes";
|
||||
NSString * const MGMXPCPath = @"/voice/xpc/?xpc=%7B%22cn%22%3A%22i70avDIMsA%22%2C%22tp%22%3Anull%2C%22pru%22%3A%22https%3A%2F%2Fwww.google.com%2Fvoice%2Fxpc%2Frelay%22%2C%22ppu%22%3A%22https%3A%2F%2Fwww.google.com%2Fvoice%2Fxpc%2Fblank%2F%22%2C%22lpu%22%3A%22https%3A%2F%2Fclients4.google.com%2Fvoice%2Fxpc%2Fblank%2F%22%7D";
|
||||
NSString * const MGMCheckPath = @"/voice/xpc/checkMessages?r=%@";
|
||||
NSString * const MGMCreditURL = @"https://www.google.com/voice/settings/billingcredit/";
|
||||
NSString * const MGMPhonesURL = @"https://www.google.com/voice/settings/tab/phones";
|
||||
NSString * const MGMCallURL = @"https://www.google.com/voice/call/connect/";
|
||||
NSString * const MGMCallCancelURL = @"https://www.google.com/voice/call/cancel/";
|
||||
|
||||
@ -234,6 +237,122 @@ const BOOL MGMInstanceInvisible = YES;
|
||||
[handler setFinish:@selector(indexDidFinish:)];
|
||||
[handler setInvisible:MGMInstanceInvisible];
|
||||
[connectionManager addHandler:handler];
|
||||
} else if ([returnedString containsString:@"Enter verification code"]) {
|
||||
[verificationParameters release];
|
||||
verificationParameters = [NSMutableDictionary new];
|
||||
[verificationParameters setObject:@"yes" forKey:@"PersistentCookie"];
|
||||
NSString *nameValue = @"name=\"%@\"";
|
||||
NSString *valueStart = @"value=\"";
|
||||
NSString *valueEnd = @"\"";
|
||||
NSString *valueStartQ = @"value='";
|
||||
NSString *valueEndQ = @"'";
|
||||
NSArray *names = [NSArray arrayWithObjects:@"timeStmp", @"secTok", @"smsToken", @"email", nil];
|
||||
for (int i=0; i<[names count]; i++) {
|
||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
||||
NSString *nameString = [NSString stringWithFormat:nameValue, [names objectAtIndex:i]];
|
||||
NSRange range = [returnedString rangeOfString:nameString];
|
||||
if (range.location==NSNotFound) {
|
||||
nameString = [nameString replace:@"\"" with:@"'"];
|
||||
range = [returnedString rangeOfString:nameString];
|
||||
}
|
||||
if (range.location==NSNotFound) {
|
||||
NSLog(@"Unable to find %@", [names objectAtIndex:i]);
|
||||
} else {
|
||||
NSString *string = [returnedString substringFromIndex:range.location+range.length];
|
||||
range = [string rangeOfString:valueStart];
|
||||
if (range.location==NSNotFound) {
|
||||
range = [string rangeOfString:valueStartQ];
|
||||
if (range.location==NSNotFound) {
|
||||
NSLog(@"Unable to find value for %@", [names objectAtIndex:i]);
|
||||
[pool drain];
|
||||
continue;
|
||||
}
|
||||
string = [string substringFromIndex:range.location+range.length];
|
||||
range = [string rangeOfString:valueEndQ];
|
||||
} else {
|
||||
string = [string substringFromIndex:range.location+range.length];
|
||||
range = [string rangeOfString:valueEnd];
|
||||
}
|
||||
if (range.location==NSNotFound) NSLog(@"failed 532");
|
||||
[verificationParameters setObject:[[[string substringWithRange:NSMakeRange(0, range.location)] copy] autorelease] forKey:[names objectAtIndex:i]];
|
||||
}
|
||||
[pool drain];
|
||||
}
|
||||
if ([delegate respondsToSelector:@selector(loginVerificationRequested)]) {
|
||||
#if MGMInstanceDebug
|
||||
NSLog(@"%@", verificationParameters);
|
||||
#endif
|
||||
[delegate loginVerificationRequested];
|
||||
} else {
|
||||
NSError *error = [NSError errorWithDomain:@"com.MrGeckosMedia.MGMInstance.Login" code:54 userInfo:[NSDictionary dictionaryWithObject:@"Unable to login. The application does not implument with 2 step verification." forKey:NSLocalizedDescriptionKey]];
|
||||
if (delegate!=nil && [delegate respondsToSelector:@selector(loginError:)]) {
|
||||
[delegate loginError:error];
|
||||
} else {
|
||||
NSLog(@"Login Error: %@", error);
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else if ([returnedString containsString:@"onload=\"autoSubmit()\""]) {
|
||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:MGMLoginURL]];
|
||||
[request setHTTPMethod:MGMPostMethod];
|
||||
[request setValue:MGMURLForm forHTTPHeaderField:MGMContentType];
|
||||
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
|
||||
NSString *nameValue = @"name=\"%@\"";
|
||||
NSString *valueStart = @"value=\"";
|
||||
NSString *valueEnd = @"\"";
|
||||
NSString *valueStartQ = @"value='";
|
||||
NSString *valueEndQ = @"'";
|
||||
NSArray *names = [NSArray arrayWithObjects:@"dsh", @"smsToken", @"followup", @"continue", @"PersistentCookie", @"service", @"rmShown", @"GALX", @"ltmpl", nil];
|
||||
for (int i=0; i<[names count]; i++) {
|
||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
||||
NSString *nameString = [NSString stringWithFormat:nameValue, [names objectAtIndex:i]];
|
||||
NSRange range = [returnedString rangeOfString:nameString];
|
||||
if (range.location==NSNotFound) {
|
||||
nameString = [nameString replace:@"\"" with:@"'"];
|
||||
range = [returnedString rangeOfString:nameString];
|
||||
}
|
||||
if (range.location==NSNotFound) {
|
||||
NSLog(@"Unable to find %@", [names objectAtIndex:i]);
|
||||
} else {
|
||||
NSString *string = [returnedString substringFromIndex:range.location+range.length];
|
||||
range = [string rangeOfString:valueStart];
|
||||
if (range.location==NSNotFound) {
|
||||
range = [string rangeOfString:valueStartQ];
|
||||
if (range.location==NSNotFound) {
|
||||
NSLog(@"Unable to find value for %@", [names objectAtIndex:i]);
|
||||
[pool drain];
|
||||
continue;
|
||||
}
|
||||
string = [string substringFromIndex:range.location+range.length];
|
||||
range = [string rangeOfString:valueEndQ];
|
||||
} else {
|
||||
string = [string substringFromIndex:range.location+range.length];
|
||||
range = [string rangeOfString:valueEnd];
|
||||
}
|
||||
if (range.location==NSNotFound) NSLog(@"failed 532");
|
||||
[parameters setObject:[[[string substringWithRange:NSMakeRange(0, range.location)] copy] autorelease] forKey:[names objectAtIndex:i]];
|
||||
}
|
||||
[pool drain];
|
||||
}
|
||||
|
||||
#if MGMInstanceDebug
|
||||
NSLog(@"%@", parameters);
|
||||
#endif
|
||||
|
||||
NSArray *parametersKeys = [parameters allKeys];
|
||||
NSMutableString *bodyString = [NSMutableString string];
|
||||
for (int i=0; i<[parametersKeys count]; i++) {
|
||||
if (i!=0)
|
||||
[bodyString appendString:@"&"];
|
||||
[bodyString appendFormat:@"%@=%@", [[parametersKeys objectAtIndex:i] addPercentEscapes], [[parameters objectForKey:[parametersKeys objectAtIndex:i]] addPercentEscapes]];
|
||||
}
|
||||
|
||||
[request setHTTPBody:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
MGMURLBasicHandler *handler = [MGMURLBasicHandler handlerWithRequest:request delegate:self];
|
||||
[handler setFailWithError:@selector(index:didFailWithError:)];
|
||||
[handler setFinish:@selector(indexDidFinish:)];
|
||||
[handler setInvisible:MGMInstanceInvisible];
|
||||
[connectionManager addHandler:handler];
|
||||
} else if ([returnedString containsString:@"<div id=\"gaia_loginbox\">"]) {
|
||||
if (webLoginTries>2) {
|
||||
NSError *error = [NSError errorWithDomain:@"com.MrGeckosMedia.MGMInstance.Login" code:1 userInfo:[NSDictionary dictionaryWithObject:@"Unable to login. Please check your Credentials." forKey:NSLocalizedDescriptionKey]];
|
||||
@ -440,21 +559,7 @@ const BOOL MGMInstanceInvisible = YES;
|
||||
phonesInfo = [string substringWithRange:NSMakeRange(0, range.location)];
|
||||
}
|
||||
}
|
||||
NSDictionary *phones = [phonesInfo parseJSON];
|
||||
//NSLog(@"%@", phones);
|
||||
NSArray *phoneKeys = [phones allKeys];
|
||||
[userPhoneNumbers release];
|
||||
userPhoneNumbers = [NSMutableArray new];
|
||||
for (int i=0; i<[phoneKeys count]; i++) {
|
||||
NSDictionary *phoneInfo = [phones objectForKey:[phoneKeys objectAtIndex:i]];
|
||||
if ([[phoneInfo objectForKey:@"telephonyVerified"] intValue]==1) {
|
||||
NSMutableDictionary *phone = [NSMutableDictionary dictionary];
|
||||
[phone setObject:[[phoneInfo objectForKey:MGMPhoneNumber] phoneFormat] forKey:MGMPhoneNumber];
|
||||
[phone setObject:[[phoneInfo objectForKey:MGMName] flattenHTML] forKey:MGMName];
|
||||
[phone setObject:[phoneInfo objectForKey:MGMType] forKey:MGMType];
|
||||
[userPhoneNumbers addObject:phone];
|
||||
}
|
||||
}
|
||||
[self parseUserPhones:[phonesInfo parseJSON]];
|
||||
#if MGMInstanceDebug
|
||||
NSLog(@"User Phones = %@", userPhoneNumbers);
|
||||
NSLog(@"Parsing XPCURL");
|
||||
@ -489,10 +594,72 @@ const BOOL MGMInstanceInvisible = YES;
|
||||
}
|
||||
}
|
||||
}
|
||||
- (void)cancelVerification {
|
||||
[verificationParameters release];
|
||||
verificationParameters = nil;
|
||||
NSError *error = [NSError errorWithDomain:@"com.MrGeckosMedia.MGMInstance.Login" code:54 userInfo:[NSDictionary dictionaryWithObject:@"Unable to login. Verification was canceled." forKey:NSLocalizedDescriptionKey]];
|
||||
if (delegate!=nil && [delegate respondsToSelector:@selector(loginError:)]) {
|
||||
[delegate loginError:error];
|
||||
} else {
|
||||
NSLog(@"Login Error: %@", error);
|
||||
}
|
||||
}
|
||||
- (void)verifyWithCode:(NSString *)theCode {
|
||||
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:MGMLoginVerifyURL]];
|
||||
[request setHTTPMethod:MGMPostMethod];
|
||||
[request setValue:MGMURLForm forHTTPHeaderField:MGMContentType];
|
||||
[verificationParameters setObject:theCode forKey:@"smsUserPin"];
|
||||
NSArray *parametersKeys = [verificationParameters allKeys];
|
||||
NSMutableString *bodyString = [NSMutableString string];
|
||||
for (int i=0; i<[parametersKeys count]; i++) {
|
||||
if (i!=0)
|
||||
[bodyString appendString:@"&"];
|
||||
[bodyString appendFormat:@"%@=%@", [[parametersKeys objectAtIndex:i] addPercentEscapes], [[verificationParameters objectForKey:[parametersKeys objectAtIndex:i]] addPercentEscapes]];
|
||||
}
|
||||
|
||||
[request setHTTPBody:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
MGMURLBasicHandler *handler = [MGMURLBasicHandler handlerWithRequest:request delegate:self];
|
||||
[handler setFailWithError:@selector(index:didFailWithError:)];
|
||||
[handler setFinish:@selector(indexDidFinish:)];
|
||||
[handler setInvisible:MGMInstanceInvisible];
|
||||
[connectionManager addHandler:handler];
|
||||
[verificationParameters release];
|
||||
verificationParameters = nil;
|
||||
}
|
||||
- (BOOL)isLoggedIn {
|
||||
return loggedIn;
|
||||
}
|
||||
|
||||
- (void)checkPhones {
|
||||
MGMURLBasicHandler *handler = [MGMURLBasicHandler handlerWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:MGMPhonesURL]] delegate:self];
|
||||
[handler setFinish:@selector(phonesFinished:)];
|
||||
[handler setInvisible:MGMInstanceInvisible];
|
||||
[connectionManager addHandler:handler];
|
||||
}
|
||||
- (void)phonesFinished:(MGMURLBasicHandler *)theHandler {
|
||||
MGMXMLElement *XML = [(MGMXMLDocument *)[[[MGMXMLDocument alloc] initWithData:[theHandler data] options:MGMXMLDocumentTidyXML error:nil] autorelease] rootElement];
|
||||
NSDictionary *info = [[[[XML elementsForName:@"json"] objectAtIndex:0] stringValue] parseJSON];
|
||||
[self parseUserPhones:[info objectForKey:@"phones"]];
|
||||
if ([delegate respondsToSelector:@selector(updatedUserPhones)]) [delegate updatedUserPhones];
|
||||
}
|
||||
- (void)parseUserPhones:(NSDictionary *)thePhones {
|
||||
if (thePhones==nil)
|
||||
return;
|
||||
NSArray *phones = [thePhones allKeys];
|
||||
[userPhoneNumbers release];
|
||||
userPhoneNumbers = [NSMutableArray new];
|
||||
for (int i=0; i<[phones count]; i++) {
|
||||
NSDictionary *phoneInfo = [thePhones objectForKey:[phones objectAtIndex:i]];
|
||||
if ([[phoneInfo objectForKey:@"verified"] intValue]==1) {
|
||||
NSMutableDictionary *phone = [NSMutableDictionary dictionary];
|
||||
[phone setObject:[[phoneInfo objectForKey:MGMPhoneNumber] phoneFormat] forKey:MGMPhoneNumber];
|
||||
[phone setObject:[[phoneInfo objectForKey:MGMName] flattenHTML] forKey:MGMName];
|
||||
[phone setObject:[phoneInfo objectForKey:MGMType] forKey:MGMType];
|
||||
[userPhoneNumbers addObject:phone];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)xpcFinished:(MGMURLBasicHandler *)theHandler {
|
||||
NSString *returnedString = [theHandler string];
|
||||
NSRange range = [returnedString rangeOfString:@"new _cd('"];
|
||||
|
@ -17,11 +17,9 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
|
||||
@class MGMSound;
|
||||
@ -33,7 +31,7 @@
|
||||
@interface MGMSound : NSObject
|
||||
#if TARGET_OS_IPHONE
|
||||
<AVAudioPlayerDelegate>
|
||||
#else
|
||||
#elif (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSSoundDelegate>
|
||||
#endif
|
||||
{
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define MGMThemeManagerDebug 0
|
||||
|
||||
@ -35,6 +31,9 @@ extern NSString * const MGMTCurrentThemePath;
|
||||
extern NSString * const MGMTCurrentThemeVariant;
|
||||
extern NSString * const MGMTShowHeader;
|
||||
extern NSString * const MGMTShowFooter;
|
||||
extern NSString * const MGMTShowIcons;
|
||||
extern NSString * const MGMTFontName;
|
||||
extern NSString * const MGMTFontSize;
|
||||
extern NSString * const MGMTInfoPlist;
|
||||
|
||||
extern NSString * const MGMTThemePath;
|
||||
@ -56,6 +55,12 @@ extern NSString * const MGMTInName;
|
||||
extern NSString * const MGMTInNumber;
|
||||
extern NSString * const MGMTPhoto;
|
||||
|
||||
extern NSString * const MGMTCOutgoing;
|
||||
extern NSString * const MGMTCIncoming;
|
||||
extern NSString * const MGMTCNext;
|
||||
extern NSString * const MGMTCMessage;
|
||||
extern NSString * const MGMTCHideIcons;
|
||||
|
||||
extern NSString * const MGMTSoundChangedNotification;
|
||||
|
||||
extern NSString * const MGMTCallSoundsFolder;
|
||||
@ -116,6 +121,7 @@ extern NSString * const MGMCAFExt;
|
||||
- (NSString *)incomingIconPath;
|
||||
- (NSString *)outgoingIconPath;
|
||||
|
||||
- (NSString *)htmlTextFromMessage:(NSDictionary *)theMessage;
|
||||
- (NSString *)replace:(NSString *)theHTML messageInfo:(NSDictionary *)theMessageInfo;
|
||||
- (NSString *)replace:(NSString *)theHTML message:(NSDictionary *)theMessage;
|
||||
- (NSString *)buildHTMLWithMessages:(NSArray *)theMessages messageInfo:(NSDictionary *)theMessageInfo;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#import "MGMInbox.h"
|
||||
#import "MGMAddons.h"
|
||||
#import "MGMSound.h"
|
||||
#import "MGMXML.h"
|
||||
#import <MGMUsers/MGMUsers.h>
|
||||
|
||||
NSString * const MGMTThemeChangedNotification = @"MGMTThemeChangedNotification";
|
||||
@ -33,6 +34,9 @@ NSString * const MGMTCurrentThemePath = @"MGMTCurrentThemePath";
|
||||
NSString * const MGMTCurrentThemeVariant = @"MGMTCurrentThemeVariant";
|
||||
NSString * const MGMTShowHeader = @"MGMTShowHeader";
|
||||
NSString * const MGMTShowFooter = @"MGMTShowFooter";
|
||||
NSString * const MGMTShowIcons = @"MGMTShowIcons";
|
||||
NSString * const MGMTFontName = @"MGMTFontName";
|
||||
NSString * const MGMTFontSize = @"MGMTFontSize";
|
||||
NSString * const MGMTInfoPlist = @"Info.plist";
|
||||
|
||||
NSString * const MGMTPResource = @"%RESOURCE%";
|
||||
@ -65,10 +69,20 @@ NSString * const MGMTContextName = @"context.html";
|
||||
NSString * const MGMTNextContentName = @"nextContent.html";
|
||||
NSString * const MGMTNextContextName = @"nextContext.html";
|
||||
|
||||
NSString * const MGMTInsertDIV = @"<div id=\"insert\"></div>";
|
||||
|
||||
NSString * const MGMTUserNumber = @"userNumber";
|
||||
NSString * const MGMTInName = @"inName";
|
||||
NSString * const MGMTPhoto = @"photo";
|
||||
|
||||
NSString * const MGMTCOutgoing = @"outgoing";
|
||||
NSString * const MGMTCIncoming = @"incoming";
|
||||
NSString * const MGMTCNext = @"next";
|
||||
NSString * const MGMTCMessage = @"message";
|
||||
NSString * const MGMTCHideIcons = @"hideIcons";
|
||||
|
||||
NSString * const MGMTRFontStyle = @"%FONTSTYLE%";
|
||||
NSString * const MGMTRMessageClasses = @"%MESSAGECLASSES%";
|
||||
NSString * const MGMTRHeader = @"%HEADER%";
|
||||
NSString * const MGMTRFooter = @"%FOOTER%";
|
||||
NSString * const MGMTRResource = @"%RESOURCE%";
|
||||
@ -151,6 +165,9 @@ NSString * const MGMCAFExt = @"caf";
|
||||
[defaults setObject:[NSNumber numberWithInt:0] forKey:MGMTCurrentThemeVariant];
|
||||
[defaults setObject:[NSNumber numberWithBool:YES] forKey:MGMTShowHeader];
|
||||
[defaults setObject:[NSNumber numberWithBool:YES] forKey:MGMTShowFooter];
|
||||
[defaults setObject:[NSNumber numberWithBool:YES] forKey:MGMTShowIcons];
|
||||
[defaults setObject:@"HelveticaNeue" forKey:MGMTFontName];
|
||||
[defaults setObject:[NSNumber numberWithInt:12] forKey:MGMTFontSize];
|
||||
[defaults setObject:[MGMTPResource stringByAppendingString:MGMTSDefaultPath] forKey:[MGMTSPath stringByAppendingString:MGMTSSMSMessage]];
|
||||
[defaults setObject:MGMTSDefaultSMSMessageName forKey:[MGMTSName stringByAppendingString:MGMTSSMSMessage]];
|
||||
[defaults setObject:[MGMTPResource stringByAppendingString:MGMTSDefaultPath] forKey:[MGMTSPath stringByAppendingString:MGMTSVoicemail]];
|
||||
@ -528,8 +545,18 @@ NSString * const MGMCAFExt = @"caf";
|
||||
return photoPath;
|
||||
}
|
||||
|
||||
- (NSString *)htmlTextFromMessage:(NSDictionary *)theMessage {
|
||||
MGMXMLElement *span = [[[MGMXMLElement alloc] initWithName:@"span"] autorelease];
|
||||
MGMXMLNode *style = [[(MGMXMLNode *)[MGMXMLNode alloc] initWithKind:MGMXMLAttributeKind] autorelease];
|
||||
[style setName:@"style"];
|
||||
[style setStringValue:[NSString stringWithFormat:@"font-family: '%@'; font-size: %dpt;", [[NSUserDefaults standardUserDefaults] objectForKey:MGMTFontName], [[NSUserDefaults standardUserDefaults] integerForKey:MGMTFontSize]]];
|
||||
[span addAttribute:style];
|
||||
[span setStringValue:[theMessage objectForKey:MGMIText]];
|
||||
return [span XMLString];
|
||||
}
|
||||
- (NSString *)replace:(NSString *)theHTML messageInfo:(NSDictionary *)theMessageInfo {
|
||||
NSString *HTML = [theHTML replace:MGMTRResource with:[[[NSBundle mainBundle] resourcePath] filePath]];
|
||||
NSString *HTML = [theHTML replace:MGMTRFontStyle with:[NSString stringWithFormat:@"font-family: '%@'; font-size: %dpt;", [[NSUserDefaults standardUserDefaults] objectForKey:MGMTFontName], [[NSUserDefaults standardUserDefaults] integerForKey:MGMTFontSize]]];
|
||||
HTML = [HTML replace:MGMTRResource with:[[[NSBundle mainBundle] resourcePath] filePath]];
|
||||
HTML = [HTML replace:MGMTRTheme with:[[self currentThemeVariantPath] filePath]];
|
||||
HTML = [HTML replace:MGMTRThemes with:[[currentTheme objectForKey:MGMTThemePath] filePath]];
|
||||
HTML = [HTML replace:MGMTRUserName with:NSFullUserName()];
|
||||
@ -543,7 +570,7 @@ NSString * const MGMCAFExt = @"caf";
|
||||
return HTML;
|
||||
}
|
||||
- (NSString *)replace:(NSString *)theHTML message:(NSDictionary *)theMessage {
|
||||
NSString *HTML = [theHTML replace:MGMTRText with:[theMessage objectForKey:MGMIText]];
|
||||
NSString *HTML = [theHTML replace:MGMTRText with:[self htmlTextFromMessage:theMessage]];
|
||||
HTML = [HTML replace:MGMTRPhoto with:[theMessage objectForKey:MGMTPhoto]];
|
||||
HTML = [HTML replace:MGMTRTime with:[theMessage objectForKey:MGMITime]];
|
||||
HTML = [HTML replace:MGMTRMessageID with:[theMessage objectForKey:MGMIID]];
|
||||
@ -603,12 +630,15 @@ NSString * const MGMCAFExt = @"caf";
|
||||
[html appendString:themeHeader];
|
||||
[pool drain];
|
||||
}
|
||||
NSString *messages = [@"" retain];
|
||||
NSDictionary *lastMessage = nil;
|
||||
for (unsigned int i=0; i<[theMessages count]; i++) {
|
||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
||||
NSDictionary *message = [theMessages objectAtIndex:i];
|
||||
NSString *messageHTML = nil;
|
||||
NSMutableArray *classes = [NSMutableArray array];
|
||||
if ([[message objectForKey:MGMIYou] boolValue]) {
|
||||
[classes addObject:MGMTCOutgoing];
|
||||
if (lastMessage==nil || ![[lastMessage objectForKey:MGMIYou] boolValue]) {
|
||||
#if MGMThemeManagerDebug
|
||||
NSLog(@"Adding Message for Outgoing Content");
|
||||
@ -636,6 +666,7 @@ NSString * const MGMCAFExt = @"caf";
|
||||
return nil;
|
||||
}
|
||||
} else {
|
||||
[classes addObject:MGMTCNext];
|
||||
#if MGMThemeManagerDebug
|
||||
NSLog(@"Adding Message for Outgoing Next Content");
|
||||
#endif
|
||||
@ -663,6 +694,7 @@ NSString * const MGMCAFExt = @"caf";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
[classes addObject:MGMTCIncoming];
|
||||
if (lastMessage==nil || [[lastMessage objectForKey:MGMIYou] boolValue]) {
|
||||
#if MGMThemeManagerDebug
|
||||
NSLog(@"Adding Message for Incoming Content");
|
||||
@ -690,6 +722,7 @@ NSString * const MGMCAFExt = @"caf";
|
||||
return nil;
|
||||
}
|
||||
} else {
|
||||
[classes addObject:MGMTCNext];
|
||||
#if MGMThemeManagerDebug
|
||||
NSLog(@"Adding Message for Incoming Next Content");
|
||||
#endif
|
||||
@ -717,12 +750,25 @@ NSString * const MGMCAFExt = @"caf";
|
||||
}
|
||||
}
|
||||
}
|
||||
[classes addObject:MGMTCMessage];
|
||||
if (![[NSUserDefaults standardUserDefaults] boolForKey:MGMTShowIcons])
|
||||
[classes addObject:MGMTCHideIcons];
|
||||
messageHTML = [self replace:messageHTML messageInfo:theMessageInfo];
|
||||
messageHTML = [self replace:messageHTML message:message];
|
||||
[html appendString:messageHTML];
|
||||
messageHTML = [messageHTML replace:MGMTRMessageClasses with:[classes componentsJoinedByString:@" "]];
|
||||
if ((([[message objectForKey:MGMIYou] boolValue] && [[lastMessage objectForKey:MGMIYou] boolValue]) || (![[message objectForKey:MGMIYou] boolValue] && ![[lastMessage objectForKey:MGMIYou] boolValue])) && lastMessage!=nil && [messages containsString:MGMTInsertDIV]) {
|
||||
[messages autorelease];
|
||||
messages = [[messages replace:MGMTInsertDIV with:messageHTML] retain];
|
||||
} else {
|
||||
[messages autorelease];
|
||||
messages = [messages replace:MGMTInsertDIV with:@""];
|
||||
messages = [[messages stringByAppendingString:messageHTML] retain];
|
||||
}
|
||||
lastMessage = message;
|
||||
[pool drain];
|
||||
}
|
||||
[html appendString:messages];
|
||||
[messages release];
|
||||
if ([manager fileExistsAtPath:[variantPath stringByAppendingPathComponent:MGMTThemeFooterName]]) {
|
||||
#if MGMThemeManagerDebug
|
||||
NSLog(@"Loading Theme Footer");
|
||||
|
@ -18,10 +18,8 @@
|
||||
//
|
||||
|
||||
#if MGMSIPENABLED
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#if !TARGET_OS_IPHONE
|
||||
#import <SystemConfiguration/SystemConfiguration.h>
|
||||
#endif
|
||||
#import <pjsua-lib/pjsua.h>
|
||||
@ -42,6 +40,7 @@ extern NSString * const MGMSIPEchoCacnellationEnabled;
|
||||
extern NSString * const MGMSIPPort;
|
||||
extern NSString * const MGMSIPPublicAddress;
|
||||
extern NSString * const MGMSIPUserAgent;
|
||||
extern NSString * const MGMSIPCodec;
|
||||
|
||||
extern NSString * const MGMNetworkConnectedNotification;
|
||||
extern NSString * const MGMNetworkDisconnectedNotification;
|
||||
@ -114,6 +113,9 @@ typedef enum {
|
||||
BOOL shouldRestart;
|
||||
NSTimer *restartTimer;
|
||||
|
||||
unsigned int codecOriginalPriority;
|
||||
NSMutableDictionary *codecsInfo;
|
||||
|
||||
NSMutableArray *accounts;
|
||||
NSMutableArray *restartAccounts;
|
||||
#if !TARGET_OS_IPHONE
|
||||
@ -163,6 +165,10 @@ typedef enum {
|
||||
|
||||
- (void)registerThread:(pj_thread_desc *)thePJThreadDesc;
|
||||
|
||||
- (void)setTopCodec:(NSString *)theCodec;
|
||||
- (void)setPriority:(unsigned int)thePriority forCodec:(NSString *)theCodec;
|
||||
- (NSDictionary *)codecs;
|
||||
|
||||
- (void)loginToAccount:(MGMSIPAccount *)theAccount;
|
||||
- (void)logoutOfAccount:(MGMSIPAccount *)theAccount;
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
#import "MGMSIPCall.h"
|
||||
#import "MGMSIPURL.h"
|
||||
#import "MGMAddons.h"
|
||||
#include <pjsua-lib/pjsua_internal.h>
|
||||
#import <pjsua-lib/pjsua_internal.h>
|
||||
#import <SystemConfiguration/SystemConfiguration.h>
|
||||
#if !TARGET_OS_IPHONE
|
||||
#import <CoreAudio/CoreAudio.h>
|
||||
@ -50,6 +50,7 @@ NSString * const MGMSIPEchoCacnellationEnabled = @"MGMSIPEchoCacnellationEnabled
|
||||
NSString * const MGMSIPPort = @"MGMSIPPort";
|
||||
NSString * const MGMSIPPublicAddress = @"MGMSIPPublicAddress";
|
||||
NSString * const MGMSIPUserAgent = @"MGMSIPUserAgent";
|
||||
NSString * const MGMSIPCodec = @"MGMSIPCodec";
|
||||
|
||||
NSString * const MGMNetworkConnectedNotification = @"MGMNetworkConnectedNotification";
|
||||
NSString * const MGMNetworkDisconnectedNotification = @"MGMNetworkDisconnectedNotification";
|
||||
@ -291,12 +292,14 @@ static OSStatus MGMAudioDevicesChanged(AudioHardwarePropertyID propertyID, void
|
||||
#endif
|
||||
shouldRestart = NO;
|
||||
|
||||
codecsInfo = [NSMutableDictionary new];
|
||||
|
||||
#if !TARGET_OS_IPHONE
|
||||
store = SCDynamicStoreCreate(kCFAllocatorDefault, CFBundleGetIdentifier(CFBundleGetMainBundle()), (SCDynamicStoreCallBack)MGMNetworkNotification, NULL);
|
||||
if (!store) {
|
||||
NSLog(@"Unable to create store for system configuration %s", SCErrorString(SCError()));
|
||||
} else {
|
||||
NSArray *keys = [NSArray arrayWithObjects:@"State:/Network/Global/IPv4", nil];
|
||||
NSArray *keys = [NSArray arrayWithObjects:@"State:/Network/Global/IPv4", @"State:/Network/Global/IPv6", nil];
|
||||
if (!SCDynamicStoreSetNotificationKeys(store, (CFArrayRef)keys, NULL)) {
|
||||
NSLog(@"Faild to set the store for notifications %s", SCErrorString(SCError()));
|
||||
CFRelease(store);
|
||||
@ -324,7 +327,9 @@ static OSStatus MGMAudioDevicesChanged(AudioHardwarePropertyID propertyID, void
|
||||
CFRelease(store);
|
||||
#endif
|
||||
[lock release];
|
||||
[codecsInfo release];
|
||||
[accounts release];
|
||||
[restartAccounts release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
@ -337,6 +342,7 @@ static OSStatus MGMAudioDevicesChanged(AudioHardwarePropertyID propertyID, void
|
||||
[defaults setObject:[NSNumber numberWithBool:NO] forKey:MGMSIPNameServersEnabled];
|
||||
[defaults setObject:[NSNumber numberWithBool:YES] forKey:MGMSIPEchoCacnellationEnabled];
|
||||
[defaults setObject:[NSNumber numberWithInt:0] forKey:MGMSIPPort];
|
||||
[defaults setObject:@"speex/16000" forKey:MGMSIPCodec];
|
||||
[defaults setObject:[NSNumber numberWithFloat:1.0] forKey:MGMSIPVolume];
|
||||
[defaults setObject:[NSNumber numberWithFloat:1.0] forKey:MGMSIPMicVolume];
|
||||
[defaults setObject:MGMSIPASystemDefault forKey:MGMSIPACurrentInputDevice];
|
||||
@ -568,6 +574,23 @@ static OSStatus MGMAudioDevicesChanged(AudioHardwarePropertyID propertyID, void
|
||||
return;
|
||||
}
|
||||
|
||||
if (pjsua_var.med_endpt!=NULL) {
|
||||
pjmedia_codec_info codecs[PJMEDIA_CODEC_MGR_MAX_CODECS];
|
||||
unsigned int prio[PJMEDIA_CODEC_MGR_MAX_CODECS];
|
||||
unsigned int count = PJ_ARRAY_SIZE(codecs);
|
||||
status = pjmedia_codec_mgr_enum_codecs(pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), &count, codecs, prio);
|
||||
|
||||
if (status==PJ_SUCCESS) {
|
||||
for (int i=0; i<count; i++) {
|
||||
[codecsInfo setObject:[NSNumber numberWithUnsignedInt:prio[i]] forKey:[NSString stringWithFormat:@"%@/%u", [NSString stringWithPJString:codecs[i].encoding_name], codecs[i].clock_rate]];
|
||||
}
|
||||
}
|
||||
codecOriginalPriority = [[codecsInfo objectForKey:[defaults objectForKey:MGMSIPCodec]] unsignedIntValue];
|
||||
[self setPriority:PJMEDIA_CODEC_PRIO_NEXT_HIGHER forCodec:[defaults objectForKey:MGMSIPCodec]];
|
||||
} else {
|
||||
NSLog(@"pjsua_var.med_endpt was NULL");
|
||||
}
|
||||
|
||||
state = MGMSIPStartedState;
|
||||
|
||||
[accounts makeObjectsPerformSelector:@selector(login)];
|
||||
@ -712,6 +735,26 @@ static OSStatus MGMAudioDevicesChanged(AudioHardwarePropertyID propertyID, void
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setTopCodec:(NSString *)theCodec {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
[self setPriority:codecOriginalPriority forCodec:[defaults objectForKey:MGMSIPCodec]];
|
||||
[defaults setObject:theCodec forKey:MGMSIPCodec];
|
||||
codecOriginalPriority = [[codecsInfo objectForKey:theCodec] unsignedIntValue];
|
||||
[self setPriority:PJMEDIA_CODEC_PRIO_NEXT_HIGHER forCodec:theCodec];
|
||||
}
|
||||
- (void)setPriority:(unsigned int)thePriority forCodec:(NSString *)theCodec {
|
||||
if ([codecsInfo objectForKey:theCodec]!=nil) {
|
||||
pj_str_t codec = [theCodec PJString];
|
||||
pj_status_t status = pjmedia_codec_mgr_set_codec_priority(pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), &codec, thePriority);
|
||||
[codecsInfo setObject:[NSNumber numberWithUnsignedInt:thePriority] forKey:theCodec];
|
||||
if (status!=PJ_SUCCESS)
|
||||
NSLog(@"Error changing priority of codec %@ to %u: %d", theCodec, thePriority, status);
|
||||
}
|
||||
}
|
||||
- (NSDictionary *)codecs {
|
||||
return codecsInfo;
|
||||
}
|
||||
|
||||
- (void)loginToAccount:(MGMSIPAccount *)theAccount {
|
||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
||||
if (![theAccount informationComplete]) {
|
||||
|
@ -18,11 +18,7 @@
|
||||
//
|
||||
|
||||
#if MGMSIPENABLED
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <pjsua-lib/pjsua.h>
|
||||
|
||||
extern NSString * const MGMSIPAccountFullName;
|
||||
|
@ -18,11 +18,7 @@
|
||||
//
|
||||
|
||||
#if MGMSIPENABLED
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <pjsua-lib/pjsua.h>
|
||||
|
||||
@class MGMSIPCall, MGMSIPAccount, MGMSIPURL;
|
||||
|
@ -261,6 +261,9 @@
|
||||
if (identifier==PJSUA_INVALID_ID || state==MGMSIPCallDisconnectedState)
|
||||
return;
|
||||
|
||||
if (isRingbackOn)
|
||||
[self stopRingback];
|
||||
|
||||
pj_thread_desc PJThreadDesc;
|
||||
[[MGMSIP sharedSIP] registerThread:&PJThreadDesc];
|
||||
|
||||
|
@ -18,11 +18,7 @@
|
||||
//
|
||||
|
||||
#if MGMSIPENABLED
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface MGMSIPURL : NSObject {
|
||||
NSString *fullName;
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <libxml/parser.h>
|
||||
#import <libxml/tree.h>
|
||||
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <VoiceBase/MGMXMLNode.h>
|
||||
|
||||
@interface MGMXMLDTD : MGMXMLNode {
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <VoiceBase/MGMXMLNode.h>
|
||||
|
||||
@interface MGMXMLDTDNode : MGMXMLNode {
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <VoiceBase/MGMXMLNode.h>
|
||||
|
||||
#define MGMXMLDocPtr (xmlDocPtr)commonXML
|
||||
@ -32,7 +28,7 @@
|
||||
- (id)initWithXMLString:(NSString *)string options:(NSUInteger)mask error:(NSError **)error;
|
||||
- (id)initWithContentsOfURL:(NSURL *)url options:(NSUInteger)mask error:(NSError **)error;
|
||||
- (id)initWithData:(NSData *)data options:(NSUInteger)mask error:(NSError **)error; //primitive
|
||||
//- (id)initWithRootElement:(MGMXMLElement *)element;
|
||||
- (id)initWithRootElement:(MGMXMLElement *)element;
|
||||
|
||||
//+ (Class)replacementClassForClass:(Class)cls;
|
||||
//- (void)setCharacterEncoding:(NSString *)encoding; //primitive
|
||||
|
@ -22,6 +22,10 @@
|
||||
#import <libxml/HTMLtree.h>
|
||||
#import <libxml/HTMLparser.h>
|
||||
|
||||
@interface MGMXMLNode (MGMPrivate)
|
||||
- (void)setDocument:(MGMXMLDocument *)theDocument;
|
||||
@end
|
||||
|
||||
@implementation MGMXMLDocument
|
||||
- (id)initWithXMLString:(NSString *)string options:(NSUInteger)mask error:(NSError **)error {
|
||||
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
|
||||
@ -57,6 +61,17 @@
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (id)initWithRootElement:(MGMXMLElement *)element {
|
||||
if ((self = [super init])) {
|
||||
xmlDocPtr document = xmlNewDoc(NULL);
|
||||
if (element!=nil) {
|
||||
xmlDocSetRootElement(document, (xmlNodePtr)[element commonXML]);
|
||||
[element setDocument:self];
|
||||
}
|
||||
[self setTypeXMLPtr:(xmlTypPtr)document];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setRootElement:(MGMXMLNode *)root {
|
||||
if ([root kind]==MGMXMLNamespaceKind)
|
||||
|
@ -17,19 +17,15 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <VoiceBase/MGMXMLNode.h>
|
||||
|
||||
@interface MGMXMLElement : MGMXMLNode {
|
||||
|
||||
}
|
||||
//- (id)initWithName:(NSString *)name;
|
||||
- (id)initWithName:(NSString *)name;
|
||||
//- (id)initWithName:(NSString *)name URI:(NSString *)URI; //primitive
|
||||
//- (id)initWithName:(NSString *)name stringValue:(NSString *)string;
|
||||
- (id)initWithName:(NSString *)name stringValue:(NSString *)string;
|
||||
- (id)initWithXMLString:(NSString *)string error:(NSError **)error;
|
||||
|
||||
- (NSArray *)elementsForName:(NSString *)name;
|
||||
|
@ -22,6 +22,18 @@
|
||||
#import "MGMXMLAddons.h"
|
||||
|
||||
@implementation MGMXMLElement
|
||||
- (id)initWithName:(NSString *)name {
|
||||
return [self initWithName:name stringValue:nil];
|
||||
}
|
||||
- (id)initWithName:(NSString *)name stringValue:(NSString *)string {
|
||||
if ((self = [super init])) {
|
||||
xmlNodePtr node = xmlNewNode(NULL, [name xmlString]);
|
||||
if (string!=nil)
|
||||
xmlNodeSetContent(node, [string xmlString]);
|
||||
[self setTypeXMLPtr:(xmlTypPtr)node];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (id)initWithXMLString:(NSString *)string error:(NSError **)error {
|
||||
[super release];
|
||||
MGMXMLDocument *document = [[MGMXMLDocument alloc] initWithXMLString:string options:0 error:error];
|
||||
@ -88,10 +100,9 @@
|
||||
}
|
||||
|
||||
- (void)addAttribute:(MGMXMLNode *)attribute {
|
||||
if ([attribute kind]==MGMXMLAttributeKind && [attribute commonXML]->parent!=NULL) {
|
||||
if ([attribute kind]==MGMXMLAttributeKind && [attribute commonXML]->parent!=NULL)
|
||||
[self removeAttributeForName:[attribute name]];
|
||||
xmlAddChild(MGMXMLNodePtr, (xmlNodePtr)[attribute commonXML]);
|
||||
}
|
||||
xmlAddChild(MGMXMLNodePtr, (xmlNodePtr)[attribute commonXML]);
|
||||
}
|
||||
- (void)removeAttributeForName:(NSString *)name {
|
||||
xmlAttrPtr attribute = MGMXMLNodePtr->properties;
|
||||
|
@ -17,11 +17,7 @@
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <VoiceBase/MGMXMLNodeOptions.h>
|
||||
#import <libxml/parser.h>
|
||||
#import <libxml/tree.h>
|
||||
@ -98,7 +94,7 @@ struct _xmlCom {
|
||||
- (BOOL)isNode;
|
||||
+ (NSError *)lastError;
|
||||
- (NSError *)lastError;
|
||||
//- (id)initWithKind:(MGMXMLNodeKind)kind;
|
||||
- (id)initWithKind:(MGMXMLNodeKind)kind;
|
||||
//- (id)initWithKind:(MGMXMLNodeKind)kind options:(NSUInteger)options; //primitive
|
||||
//+ (id)document;
|
||||
//+ (id)documentWithRootElement:(MGMXMLElement *)element;
|
||||
@ -121,7 +117,7 @@ struct _xmlCom {
|
||||
- (NSString *)name;
|
||||
//- (void)setObjectValue:(id)value; //primitive
|
||||
//- (id)objectValue; //primitive
|
||||
//- (void)setStringValue:(NSString *)string;
|
||||
- (void)setStringValue:(NSString *)string;
|
||||
//- (void)setStringValue:(NSString *)string resolvingEntities:(BOOL)resolve; //primitive
|
||||
- (NSString *)stringValue; //primitive
|
||||
|
||||
|
@ -63,22 +63,28 @@ static void MGMXMLErrorHandler(void *userData, xmlErrorPtr error) {
|
||||
}
|
||||
- (id)initWithTypeXMLPtr:(xmlTypPtr)theXMLPtr {
|
||||
if ((self = [self init])) {
|
||||
if (theXMLPtr->type==MGMXMLNamespaceKind) {
|
||||
xmlNsPtr xmlPtr = (xmlNsPtr)theXMLPtr;
|
||||
if (xmlPtr->_private!=NULL) {
|
||||
[self release];
|
||||
self = nil;
|
||||
return [(MGMXMLNode *)xmlPtr->_private retain];
|
||||
}
|
||||
if (theXMLPtr==NULL) {
|
||||
//NSLog(@"NULL XMLPtr");
|
||||
[self release];
|
||||
self = nil;
|
||||
} else {
|
||||
xmlComPtr comXML = (xmlComPtr)theXMLPtr;
|
||||
if (comXML->_private!=NULL) {
|
||||
[self release];
|
||||
self = nil;
|
||||
return [(MGMXMLNode *)comXML->_private retain];
|
||||
if (theXMLPtr->type==MGMXMLNamespaceKind) {
|
||||
xmlNsPtr xmlPtr = (xmlNsPtr)theXMLPtr;
|
||||
if (xmlPtr->_private!=NULL) {
|
||||
[self release];
|
||||
self = nil;
|
||||
return [(MGMXMLNode *)xmlPtr->_private retain];
|
||||
}
|
||||
} else {
|
||||
xmlComPtr comXML = (xmlComPtr)theXMLPtr;
|
||||
if (comXML->_private!=NULL) {
|
||||
[self release];
|
||||
self = nil;
|
||||
return [(MGMXMLNode *)comXML->_private retain];
|
||||
}
|
||||
}
|
||||
[self setTypeXMLPtr:theXMLPtr];
|
||||
}
|
||||
[self setTypeXMLPtr:theXMLPtr];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@ -239,6 +245,10 @@ static void MGMXMLErrorHandler(void *userData, xmlErrorPtr error) {
|
||||
documentNode = [[MGMXMLDocument alloc] initWithTypeXMLPtr:(xmlTypPtr)commonXML->doc];
|
||||
}
|
||||
}
|
||||
- (void)setDocument:(MGMXMLDocument *)theDocument {
|
||||
[documentNode release];
|
||||
documentNode = [theDocument retain];
|
||||
}
|
||||
- (void)releaseDocument {
|
||||
[documentNode release];
|
||||
documentNode = nil;
|
||||
@ -272,6 +282,27 @@ static void MGMXMLErrorHandler(void *userData, xmlErrorPtr error) {
|
||||
return [[self class] lastError];
|
||||
}
|
||||
|
||||
- (id)initWithKind:(MGMXMLNodeKind)kind {
|
||||
if (kind==MGMXMLDocumentKind) {
|
||||
[self release];
|
||||
return [[MGMXMLDocument alloc] initWithRootElement:nil];
|
||||
} else if (kind==MGMXMLElementKind) {
|
||||
return [self initWithTypeXMLPtr:(xmlTypPtr)xmlNewNode(NULL, NULL)];
|
||||
} else if (kind==MGMXMLAttributeKind) {
|
||||
return [self initWithTypeXMLPtr:(xmlTypPtr)xmlNewProp(NULL, (const xmlChar *)"", NULL)];
|
||||
} else if (kind==MGMXMLNamespaceKind) {
|
||||
return [self initWithTypeXMLPtr:(xmlTypPtr)xmlNewNs(NULL, NULL, NULL)];
|
||||
} else if (kind==MGMXMLProcessingInstructionKind) {
|
||||
return [self initWithTypeXMLPtr:(xmlTypPtr)xmlNewPI(NULL, NULL)];
|
||||
} else if (kind==MGMXMLCommentKind) {
|
||||
return [self initWithTypeXMLPtr:(xmlTypPtr)xmlNewComment(NULL)];
|
||||
} else if (kind==MGMXMLTextKind) {
|
||||
return [self initWithTypeXMLPtr:(xmlTypPtr)xmlNewText(NULL)];
|
||||
}
|
||||
[self release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (MGMXMLNodeKind)kind {
|
||||
return type;
|
||||
}
|
||||
@ -300,13 +331,19 @@ static void MGMXMLErrorHandler(void *userData, xmlErrorPtr error) {
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
- (void)setStringValue:(NSString *)string {
|
||||
if (type==MGMXMLNamespaceKind) {
|
||||
namespaceXML->href = [string xmlString];
|
||||
} else if ([self isNode] || type==MGMXMLAttributeKind) {
|
||||
xmlChar *contentString = xmlEncodeEntitiesReentrant(commonXML->doc, [string xmlString]);
|
||||
xmlNodeSetContent(MGMXMLNodePtr, contentString);
|
||||
xmlFree(contentString);
|
||||
}
|
||||
}
|
||||
- (NSString *)stringValue {
|
||||
if (type==MGMXMLNamespaceKind) {
|
||||
return [NSString stringWithXMLString:namespaceXML->href];
|
||||
} else if (type==MGMXMLAttributeKind) {
|
||||
if (MGMXMLAttrPtr->children!=NULL)
|
||||
return [NSString stringWithXMLString:MGMXMLAttrPtr->children->content];
|
||||
} else if ([self isNode]) {
|
||||
} else if ([self isNode] || type==MGMXMLAttributeKind) {
|
||||
xmlChar *contentString = xmlNodeGetContent(MGMXMLNodePtr);
|
||||
NSString *stringValue = [NSString stringWithXMLString:contentString];
|
||||
xmlFree(contentString);
|
||||
|
@ -21,7 +21,11 @@
|
||||
|
||||
@class MGMInstance, MGMURLConnectionManager, QTMovieView;
|
||||
|
||||
@interface MGMInboxPlayWindow : NSWindow <NSWindowDelegate> {
|
||||
@interface MGMInboxPlayWindow : NSWindow
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSWindowDelegate>
|
||||
#endif
|
||||
{
|
||||
MGMInstance *instance;
|
||||
MGMURLConnectionManager *connectionManager;
|
||||
IBOutlet NSView *view;
|
||||
|
@ -438,12 +438,22 @@ NSString * const MGMSID = @"id";
|
||||
[self markRead:self];
|
||||
}
|
||||
|
||||
- (float)splitView:(NSSplitView *)sender constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset {
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (float)splitView:(NSSplitView *)sender constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset
|
||||
#else
|
||||
- (CGFloat)splitView:(NSSplitView *)sender constrainMinCoordinate:(CGFloat)proposedMin ofSubviewAt:(NSInteger)offset
|
||||
#endif
|
||||
{
|
||||
leftMax = [[[sender subviews] objectAtIndex:0] frame].size.width;
|
||||
rightMax = [[[sender subviews] objectAtIndex:1] frame].size.width;
|
||||
return 0.0;
|
||||
}
|
||||
- (float)splitView:(NSSplitView *)sender constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (float)splitView:(NSSplitView *)sender constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset
|
||||
#else
|
||||
- (CGFloat)splitView:(NSSplitView *)sender constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)offset
|
||||
#endif
|
||||
{
|
||||
leftMax = [[[sender subviews] objectAtIndex:0] frame].size.width;
|
||||
rightMax = [[[sender subviews] objectAtIndex:1] frame].size.width;
|
||||
return proposedMax - 250.0;
|
||||
|
@ -23,7 +23,11 @@
|
||||
|
||||
extern NSString *MGMContactsWindowOpen;
|
||||
|
||||
@interface MGMContactsController : NSObject <NSTextFieldDelegate> {
|
||||
@interface MGMContactsController : NSObject
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSTextFieldDelegate>
|
||||
#endif
|
||||
{
|
||||
MGMController *controller;
|
||||
IBOutlet NSWindow *contactsWindow;
|
||||
BOOL closingWindow;
|
||||
|
@ -525,7 +525,6 @@ NSString * const MGMLoading = @"Loading...";
|
||||
NSBeep();
|
||||
return;
|
||||
}
|
||||
connectionManager = [MGMURLConnectionManager new];
|
||||
MGMWhitePagesHandler *handler = [MGMWhitePagesHandler reverseLookup:phoneNumber delegate:self];
|
||||
[connectionManager addHandler:handler];
|
||||
[RLName setStringValue:MGMLoading];
|
||||
@ -535,7 +534,7 @@ NSString * const MGMLoading = @"Loading...";
|
||||
[RLPhoneNumber setStringValue:MGMLoading];
|
||||
[RLWindow orderFront:self];
|
||||
}
|
||||
- (void)reverseLookup:(NSDictionary *)theInfo didFailWithError:(NSError *)theError {
|
||||
- (void)reverseLookup:(MGMWhitePagesHandler *)theHandler didFailWithError:(NSError *)theError {
|
||||
NSAlert *alert = [[NSAlert new] autorelease];
|
||||
[alert setMessageText:@"Reverse Lookup Failed"];
|
||||
[alert setInformativeText:[theError localizedDescription]];
|
||||
@ -557,12 +556,12 @@ NSString * const MGMLoading = @"Loading...";
|
||||
} else {
|
||||
[RLCityState setStringValue:@""];
|
||||
}
|
||||
if ([theHandler zip]) {
|
||||
if ([theHandler zip]!=nil) {
|
||||
[RLZipCode setStringValue:[theHandler zip]];
|
||||
} else {
|
||||
[RLZipCode setStringValue:@""];
|
||||
}
|
||||
if ([theHandler phoneNumber]) {
|
||||
if ([theHandler phoneNumber]!=nil) {
|
||||
[RLPhoneNumber setStringValue:[[theHandler phoneNumber] readableNumber]];
|
||||
} else {
|
||||
[RLPhoneNumber setStringValue:@""];
|
||||
|
@ -20,15 +20,21 @@
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "MGMContactsController.h"
|
||||
|
||||
extern NSString *MGMLastUserPhoneKey;
|
||||
extern NSString * const MGMLastUserPhoneKey;
|
||||
|
||||
@class MGMController, MGMUser, MGMInstance, MGMInboxWindow, MGMProgressView, MGMPhoneField, MGMPhoneFieldView, MGMContactsTableView;
|
||||
@class MGMController, MGMUser, MGMInstance, MGMInboxWindow, MGMVoiceVerify, MGMProgressView, MGMPhoneField, MGMPhoneFieldView, MGMContactsTableView;
|
||||
|
||||
@interface MGMVoiceUser : MGMContactsController <NSAnimationDelegate> {
|
||||
@interface MGMVoiceUser : MGMContactsController
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSAnimationDelegate>
|
||||
#endif
|
||||
{
|
||||
MGMInstance *instance;
|
||||
MGMUser *user;
|
||||
MGMInboxWindow *inboxWindow;
|
||||
|
||||
MGMVoiceVerify *verifyWindow;
|
||||
|
||||
MGMProgressView *progressView;
|
||||
NSViewAnimation *progressFadeAnimation;
|
||||
IBOutlet NSTextField *creditField;
|
||||
@ -53,6 +59,8 @@ extern NSString *MGMLastUserPhoneKey;
|
||||
- (void)loginSuccessful;
|
||||
- (void)setInstanceInfo;
|
||||
|
||||
- (void)updatedUserPhones;
|
||||
|
||||
- (BOOL)isPlacingCall;
|
||||
- (void)donePlacingCall;
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#import "MGMVoiceUser.h"
|
||||
#import "MGMController.h"
|
||||
#import "MGMVoiceVerify.h"
|
||||
#import "MGMProgressView.h"
|
||||
#import "MGMContactView.h"
|
||||
#import "MGMPhoneFeild.h"
|
||||
@ -27,7 +28,7 @@
|
||||
#import <VoiceBase/VoiceBase.h>
|
||||
#import <MGMUsers/MGMUsers.h>
|
||||
|
||||
NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
NSString * const MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
|
||||
@implementation MGMVoiceUser
|
||||
+ (id)voiceUser:(MGMUser *)theUser controller:(MGMController *)theController {
|
||||
@ -74,7 +75,6 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
[progressFadeAnimation stopAnimation];
|
||||
[progressFadeAnimation release];
|
||||
progressFadeAnimation = nil;
|
||||
[super dealloc];
|
||||
[inboxWindow closeWindow];
|
||||
[inboxWindow release];
|
||||
[instance setDelegate:nil];
|
||||
@ -85,6 +85,8 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
[callTimer invalidate];
|
||||
[callTimer release];
|
||||
[user release];
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)registerSettings {
|
||||
@ -123,12 +125,20 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
[theAlert setInformativeText:[theError localizedDescription]];
|
||||
[theAlert runModal];
|
||||
|
||||
[verifyWindow release];
|
||||
verifyWindow = nil;
|
||||
[progressView stopProgess];
|
||||
[progressView removeFromSuperview];
|
||||
[progressView release];
|
||||
progressView = nil;
|
||||
}
|
||||
- (void)loginVerificationRequested {
|
||||
[verifyWindow release];
|
||||
verifyWindow = [[MGMVoiceVerify verifyWithInstance:instance] retain];
|
||||
}
|
||||
- (void)loginSuccessful {
|
||||
[verifyWindow release];
|
||||
verifyWindow = nil;
|
||||
[progressView stopProgess];
|
||||
[progressView display];
|
||||
|
||||
@ -145,17 +155,11 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
}
|
||||
}
|
||||
- (void)setInstanceInfo {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(becameActive) name:NSApplicationDidBecomeActiveNotification object:nil];
|
||||
if (contactsWindow==nil) return;
|
||||
if ([instance isLoggedIn]) {
|
||||
[userNumberButton setTitle:[[instance userNumber] readableNumber]];
|
||||
[userPhonesButton removeAllItems];
|
||||
NSArray *phones = [instance userPhoneNumbers];
|
||||
for (int i=0; i<[phones count]; i++) {
|
||||
NSDictionary *phone = [phones objectAtIndex:i];
|
||||
[userPhonesButton addItemWithTitle:[NSString stringWithFormat:@"%@ [%@]", [[phone objectForKey:MGMPhoneNumber] readableNumber], [phone objectForKey:MGMName]]];
|
||||
[userPhonesButton selectItemAtIndex:0];
|
||||
}
|
||||
[userPhonesButton selectItemAtIndex:[[user settingForKey:MGMLastUserPhoneKey] intValue]];
|
||||
[self updatedUserPhones];
|
||||
}
|
||||
}
|
||||
- (void)animationDidEnd:(NSAnimation *)animation {
|
||||
@ -175,6 +179,24 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
[progressView display];
|
||||
}
|
||||
|
||||
- (void)becameActive {
|
||||
[instance checkPhones];
|
||||
}
|
||||
- (void)updatedUserPhones {
|
||||
[userPhonesButton removeAllItems];
|
||||
NSArray *phones = [instance userPhoneNumbers];
|
||||
for (int i=0; i<[phones count]; i++) {
|
||||
NSDictionary *phone = [phones objectAtIndex:i];
|
||||
[userPhonesButton addItemWithTitle:[NSString stringWithFormat:@"%@ [%@]", [[phone objectForKey:MGMPhoneNumber] readableNumber], [phone objectForKey:MGMName]]];
|
||||
[userPhonesButton selectItemAtIndex:0];
|
||||
}
|
||||
if ([[instance userPhoneNumbers] count]>=1) {
|
||||
if ([[instance userPhoneNumbers] count]<([[user settingForKey:MGMLastUserPhoneKey] intValue]+1))
|
||||
[user setSetting:[NSNumber numberWithInt:0] forKey:MGMLastUserPhoneKey];
|
||||
[userPhonesButton selectItemAtIndex:[[user settingForKey:MGMLastUserPhoneKey] intValue]];
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)areaCode {
|
||||
if (![instance isLoggedIn])
|
||||
return nil;
|
||||
@ -212,12 +234,12 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
[[instance connectionManager] cancelAll];
|
||||
[callButton setImage:[NSImage imageNamed:@"placeCall"]];
|
||||
[instance cancelCallWithDelegate:self];
|
||||
} else if ([[instance userPhoneNumbers] count]<=0) {
|
||||
NSAlert *alert = [[NSAlert new] autorelease];
|
||||
[alert setMessageText:@"Call Failed"];
|
||||
[alert setInformativeText:@"You need to have a phone number setup with your Google Voice account. To add one, click your Google Voice number at the bottom left of your Contacts window and add a phone number. Once you got a phone number setup with Google Voice, reopen VoiceMac."];
|
||||
[alert runModal];
|
||||
} else {
|
||||
if ([userPhonesButton indexOfSelectedItem]==-1) {
|
||||
NSBeep();
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *phoneNumber = [controller currentPhoneNumber];
|
||||
if (phoneNumber==nil || [phoneNumber isEqual:@""]) {
|
||||
NSBeep();
|
||||
@ -276,8 +298,8 @@ NSString *MGMLastUserPhoneKey = @"MGMLastUserPhone";
|
||||
- (void)updateSMS {
|
||||
[[controller SMSManager] checkSMSMessagesForInstance:instance];
|
||||
}
|
||||
- (void)updateCredit:(NSString *)credit {
|
||||
[creditField setStringValue:credit];
|
||||
- (void)updateCredit:(NSString *)theCredit {
|
||||
[creditField setStringValue:theCredit];
|
||||
}
|
||||
|
||||
- (IBAction)viewSettings:(id)sender {
|
||||
|
35
Classes/VoiceMac/MGMVoiceVerify.h
Normal file
35
Classes/VoiceMac/MGMVoiceVerify.h
Normal file
@ -0,0 +1,35 @@
|
||||
//
|
||||
// MGMVoiceVerify.h
|
||||
// VoiceMac
|
||||
//
|
||||
// Created by James on 3/17/11.
|
||||
// Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/
|
||||
//
|
||||
// Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||
// with or without fee is hereby granted, provided that the above copyright notice
|
||||
// and this permission notice appear in all copies.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
|
||||
// OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@class MGMInstance;
|
||||
|
||||
@interface MGMVoiceVerify : NSObject {
|
||||
MGMInstance *instance;
|
||||
|
||||
IBOutlet NSWindow *window;
|
||||
IBOutlet NSTextField *codeField;
|
||||
}
|
||||
+ (id)verifyWithInstance:(MGMInstance *)theInstance;
|
||||
- (id)initWithInstance:(MGMInstance *)theInstance;
|
||||
|
||||
- (IBAction)verify:(id)sender;
|
||||
- (IBAction)cancel:(id)sender;
|
||||
@end
|
54
Classes/VoiceMac/MGMVoiceVerify.m
Normal file
54
Classes/VoiceMac/MGMVoiceVerify.m
Normal file
@ -0,0 +1,54 @@
|
||||
//
|
||||
// MGMVoiceVerify.m
|
||||
// VoiceMac
|
||||
//
|
||||
// Created by James on 3/17/11.
|
||||
// Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/
|
||||
//
|
||||
// Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||
// with or without fee is hereby granted, provided that the above copyright notice
|
||||
// and this permission notice appear in all copies.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
|
||||
// OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||||
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
//
|
||||
|
||||
#import "MGMVoiceVerify.h"
|
||||
#import <VoiceBase/VoiceBase.h>
|
||||
|
||||
@implementation MGMVoiceVerify
|
||||
+ (id)verifyWithInstance:(MGMInstance *)theInstance {
|
||||
return [[[self alloc] initWithInstance:theInstance] autorelease];
|
||||
}
|
||||
- (id)initWithInstance:(MGMInstance *)theInstance {
|
||||
if ((self = [super init])) {
|
||||
if (![NSBundle loadNibNamed:@"VoiceVerify" owner:self]) {
|
||||
NSLog(@"Unable to load Voice Verification.");
|
||||
[theInstance cancelVerification];
|
||||
[self release];
|
||||
self = nil;
|
||||
} else {
|
||||
instance = theInstance;
|
||||
[window makeKeyAndOrderFront:self];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (void)dealloc {
|
||||
[window release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (IBAction)verify:(id)sender {
|
||||
[window close];
|
||||
[instance verifyWithCode:[codeField stringValue]];
|
||||
}
|
||||
- (IBAction)cancel:(id)sender {
|
||||
[window close];
|
||||
[instance cancelVerification];
|
||||
}
|
||||
@end
|
@ -49,6 +49,7 @@
|
||||
IBOutlet NSTextField *consoleLogLevelField;
|
||||
IBOutlet NSTextField *publicAddressField;
|
||||
IBOutlet NSTextField *userAgentField;
|
||||
IBOutlet NSPopUpButton *codecPopUp;
|
||||
}
|
||||
- (id)initWithPreferences:(MGMPreferences *)thePreferences;
|
||||
+ (void)setUpToolbarItem:(NSToolbarItem *)theItem;
|
||||
@ -79,5 +80,6 @@
|
||||
- (IBAction)consoleLogLevel:(id)sender;
|
||||
- (IBAction)publicAddress:(id)sender;
|
||||
- (IBAction)userAgent:(id)sender;
|
||||
- (IBAction)codec:(id)sender;
|
||||
@end
|
||||
#endif
|
@ -62,6 +62,15 @@
|
||||
[publicAddressField setStringValue:[defaults objectForKey:MGMSIPPublicAddress]];
|
||||
if ([defaults objectForKey:MGMSIPUserAgent]!=nil)
|
||||
[userAgentField setStringValue:[defaults objectForKey:MGMSIPUserAgent]];
|
||||
NSArray *codecs = [[[MGMSIP sharedSIP] codecs] allKeys];
|
||||
codecs = [codecs sortedArrayUsingSelector:@selector(compare:)];
|
||||
int currentCodecIndex = 0;
|
||||
for (int i=0; i<[codecs count]; i++) {
|
||||
if ([[codecs objectAtIndex:i] isEqual:[defaults objectForKey:MGMSIPCodec]])
|
||||
currentCodecIndex = i;
|
||||
[codecPopUp addItemWithTitle:[codecs objectAtIndex:i]];
|
||||
}
|
||||
[codecPopUp selectItemAtIndex:currentCodecIndex];
|
||||
|
||||
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
|
||||
[notificationCenter addObserver:self selector:@selector(volumeChanged:) name:MGMSIPVolumeChangedNotification object:nil];
|
||||
@ -244,5 +253,8 @@
|
||||
[[NSUserDefaults standardUserDefaults] setObject:[userAgentField stringValue] forKey:MGMSIPUserAgent];
|
||||
shouldRestart = YES;
|
||||
}
|
||||
- (IBAction)codec:(id)sender {
|
||||
[[MGMSIP sharedSIP] setTopCodec:[[codecPopUp selectedItem] title]];
|
||||
}
|
||||
@end
|
||||
#endif
|
@ -32,9 +32,14 @@
|
||||
IBOutlet NSPopUpButton *themePopUp;
|
||||
IBOutlet NSPopUpButton *variantPopUp;
|
||||
IBOutlet NSButton *authorButton;
|
||||
IBOutlet NSTextField *fontPreview;
|
||||
IBOutlet NSButton *headerButton;
|
||||
IBOutlet NSButton *footerButton;
|
||||
IBOutlet NSButton *iconsButton;
|
||||
|
||||
IBOutlet NSWindow *browserWindow;
|
||||
IBOutlet WebView *browser;
|
||||
NSButton *selectFont;
|
||||
}
|
||||
- (id)initWithPreferences:(MGMPreferences *)thePreferences;
|
||||
+ (void)setUpToolbarItem:(NSToolbarItem *)theItem;
|
||||
@ -47,6 +52,10 @@
|
||||
- (IBAction)changeTheme:(id)sender;
|
||||
- (IBAction)changeVariant:(id)sender;
|
||||
- (IBAction)authorSite:(id)sender;
|
||||
- (IBAction)selectFont:(id)sender;
|
||||
- (IBAction)header:(id)sender;
|
||||
- (IBAction)footer:(id)sender;
|
||||
- (IBAction)icons:(id)sender;
|
||||
|
||||
- (IBAction)showBrowser:(id)sender;
|
||||
@end
|
@ -55,6 +55,14 @@ NSString * const MGMTestTTPhoto = @"tPhoto";
|
||||
[testMessageInfo setObject:@"+17204325686" forKey:MGMTUserNumber];
|
||||
[testMessageInfo setObject:@"673bd22599231d1a9ba78760f2df085a7237b4b3" forKey:MGMIID];
|
||||
[SMSView setResourceLoadDelegate:self];
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSFont *font = [NSFont fontWithName:[defaults objectForKey:MGMTFontName] size:[defaults integerForKey:MGMTFontSize]];
|
||||
[fontPreview setFont:font];
|
||||
[fontPreview setStringValue:[NSString stringWithFormat:@"%@ %d", [font fontName], (int)[font pointSize]]];
|
||||
|
||||
[headerButton setState:([defaults boolForKey:MGMTShowHeader] ? NSOnState : NSOffState)];
|
||||
[footerButton setState:([defaults boolForKey:MGMTShowFooter] ? NSOnState : NSOffState)];
|
||||
[iconsButton setState:([defaults boolForKey:MGMTShowIcons] ? NSOnState : NSOffState)];
|
||||
[self reload:self];
|
||||
}
|
||||
}
|
||||
@ -138,6 +146,46 @@ NSString * const MGMTestTTPhoto = @"tPhoto";
|
||||
if ([[themeManager theme] objectForKey:MGMTSite]!=nil)
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[[themeManager theme] objectForKey:MGMTSite]]];
|
||||
}
|
||||
- (IBAction)selectFont:(id)sender {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSFontManager *fontManager = [NSFontManager sharedFontManager];
|
||||
|
||||
NSFontPanel *fontPanel = [fontManager fontPanel:YES];
|
||||
[fontPanel setDelegate:self];
|
||||
[fontPanel setPanelFont:[NSFont fontWithName:[defaults objectForKey:MGMTFontName] size:[defaults integerForKey:MGMTFontSize]] isMultiple:NO];
|
||||
[fontPanel makeKeyAndOrderFront:self];
|
||||
}
|
||||
- (void)changeFont:(id)sender {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
NSFont *font = [sender convertFont:[NSFont fontWithName:[defaults objectForKey:MGMTFontName] size:[defaults integerForKey:MGMTFontSize]]];
|
||||
[defaults setObject:[font fontName] forKey:MGMTFontName];
|
||||
[defaults setInteger:(int)[font pointSize] forKey:MGMTFontSize];
|
||||
[fontPreview setFont:font];
|
||||
[fontPreview setStringValue:[NSString stringWithFormat:@"%@ %d", [font fontName], (int)[font pointSize]]];
|
||||
}
|
||||
- (void)windowWillClose:(NSNotification *)notification {
|
||||
[self reload:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MGMTUpdatedSMSThemeNotification object:self];
|
||||
}
|
||||
- (void)windowDidResignKey:(NSNotification *)notification {
|
||||
[[notification object] close];
|
||||
}
|
||||
- (IBAction)header:(id)sender {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:([headerButton state]==NSOnState) forKey:MGMTShowHeader];
|
||||
[self reload:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MGMTUpdatedSMSThemeNotification object:self];
|
||||
}
|
||||
- (IBAction)footer:(id)sender {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:([footerButton state]==NSOnState) forKey:MGMTShowFooter];
|
||||
[self reload:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MGMTUpdatedSMSThemeNotification object:self];
|
||||
}
|
||||
- (IBAction)icons:(id)sender {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:([iconsButton state]==NSOnState) forKey:MGMTShowIcons];
|
||||
[self reload:self];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MGMTUpdatedSMSThemeNotification object:self];
|
||||
}
|
||||
|
||||
- (IBAction)showBrowser:(id)sender {
|
||||
[[browser mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mrgeckosmedia.com/voicemac/themes/"]]];
|
||||
[browserWindow makeKeyAndOrderFront:self];
|
||||
|
@ -25,7 +25,11 @@
|
||||
|
||||
extern NSString * const MGMSIPUserAreaCode;
|
||||
|
||||
@interface MGMSIPUser : MGMContactsController <NSAnimationDelegate> {
|
||||
@interface MGMSIPUser : MGMContactsController
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSAnimationDelegate>
|
||||
#endif
|
||||
{
|
||||
MGMUser *user;
|
||||
MGMSIPAccount *account;
|
||||
NSMutableArray *calls;
|
||||
|
@ -82,7 +82,6 @@ NSString * const MGMSIPUserAreaCode = @"MGMVSIPUserAreaCode";
|
||||
[progressView release];
|
||||
[SIPRegistrationTimeout invalidate];
|
||||
[SIPRegistrationTimeout release];
|
||||
[super dealloc];
|
||||
[calls removeAllObjects];
|
||||
[calls release];
|
||||
[account logout];
|
||||
@ -90,6 +89,7 @@ NSString * const MGMSIPUserAreaCode = @"MGMVSIPUserAreaCode";
|
||||
[contacts stop];
|
||||
[contacts release];
|
||||
[user release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)registerSettings {
|
||||
|
@ -117,9 +117,13 @@
|
||||
[theAlert setMessageText:@"Error sending a SMS Message"];
|
||||
[theAlert setInformativeText:@"You need to at least have 1 contact to send to."];
|
||||
[theAlert runModal];
|
||||
} else if ([[SMSTextView string] isEqual:@""]) {
|
||||
NSAlert *theAlert = [[NSAlert new] autorelease];
|
||||
[theAlert setMessageText:@"Error sending a SMS Message"];
|
||||
[theAlert setInformativeText:@"Message is blank."];
|
||||
[theAlert runModal];
|
||||
} else {
|
||||
if ([[SMSTextView string] isEqual:@""])
|
||||
return;
|
||||
[SMSTextView setEditable:NO];
|
||||
sendingMessage = YES;
|
||||
[sendButton setTitle:@"Sending..."];
|
||||
[sendButton setEnabled:NO];
|
||||
|
@ -98,19 +98,39 @@ const float updateTimeInterval = 300.0;
|
||||
[[[messagesTable subviews] lastObject] removeFromSuperviewWithoutNeedingDisplay];
|
||||
[messagesTable reloadData];
|
||||
}
|
||||
- (int)numberOfRowsInTableView:(NSTableView *)tableView {
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (int)numberOfRowsInTableView:(NSTableView *)theTableView
|
||||
#else
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView *)theTableView
|
||||
#endif
|
||||
{
|
||||
return [SMSMessages count];
|
||||
}
|
||||
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row {
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (id)tableView:(NSTableView *)theTableView objectValueForTableColumn:(NSTableColumn *)theTableColumn row:(int)theRow
|
||||
#else
|
||||
- (id)tableView:(NSTableView *)theTableView objectValueForTableColumn:(NSTableColumn *)theTableColumn row:(NSInteger)theRow
|
||||
#endif
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(int)row {
|
||||
[(MGMViewCell *)cell addSubview:[[SMSMessages objectAtIndex:row] view]];
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (void)tableView:(NSTableView *)theTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)theTableColumn row:(int)theRow
|
||||
#else
|
||||
- (void)tableView:(NSTableView *)theTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)theTableColumn row:(NSInteger)theRow
|
||||
#endif
|
||||
{
|
||||
[(MGMViewCell *)cell addSubview:[[SMSMessages objectAtIndex:theRow] view]];
|
||||
}
|
||||
- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row {
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (BOOL)tableView:(NSTableView *)theTableView shouldSelectRow:(int)theRow
|
||||
#else
|
||||
- (BOOL)tableView:(NSTableView *)theTableView shouldSelectRow:(NSInteger)theRow
|
||||
#endif
|
||||
{
|
||||
while ([[messageView subviews] count]>0)
|
||||
[[[messageView subviews] lastObject] removeFromSuperviewWithoutNeedingDisplay];
|
||||
MGMSMSMessageView *message = [SMSMessages objectAtIndex:row];
|
||||
MGMSMSMessageView *message = [SMSMessages objectAtIndex:theRow];
|
||||
[[message SMSSplitView] setFrame:NSMakeRect(0, 0, [messageView frame].size.width, [messageView frame].size.height)];
|
||||
[messageView addSubview:[message SMSSplitView]];
|
||||
[SMSWindow makeFirstResponder:[message SMSTextField]];
|
||||
@ -243,12 +263,22 @@ const float updateTimeInterval = 300.0;
|
||||
return [[[SMSMessages objectAtIndex:[messagesTable selectedRow]] messageInfo] objectForKey:MGMIPhoneNumber];
|
||||
}
|
||||
|
||||
- (float)splitView:(NSSplitView *)sender constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset {
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (float)splitView:(NSSplitView *)sender constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset
|
||||
#else
|
||||
- (CGFloat)splitView:(NSSplitView *)sender constrainMinCoordinate:(CGFloat)proposedMin ofSubviewAt:(NSInteger)offset
|
||||
#endif
|
||||
{
|
||||
leftMax = [[[sender subviews] objectAtIndex:0] frame].size.width;
|
||||
rightMax = [[[sender subviews] objectAtIndex:1] frame].size.width;
|
||||
return 0.0;
|
||||
}
|
||||
- (float)splitView:(NSSplitView *)sender constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (float)splitView:(NSSplitView *)sender constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset
|
||||
#else
|
||||
- (CGFloat)splitView:(NSSplitView *)sender constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)offset
|
||||
#endif
|
||||
{
|
||||
leftMax = [[[sender subviews] objectAtIndex:0] frame].size.width;
|
||||
rightMax = [[[sender subviews] objectAtIndex:1] frame].size.width;
|
||||
return proposedMax - 150.0;
|
||||
|
@ -173,21 +173,31 @@
|
||||
tPhotoPath = [[[manager themeManager] incomingIconPath] filePath];
|
||||
NSMutableDictionary *message = [NSMutableDictionary dictionaryWithDictionary:theMessage];
|
||||
[message setObject:[[NSNumber numberWithInt:[messages count]-1] stringValue] forKey:MGMIID];
|
||||
NSMutableArray *classes = [NSMutableArray array];
|
||||
int type = 1;
|
||||
if ([[message objectForKey:MGMIYou] boolValue]) {
|
||||
[classes addObject:MGMTCOutgoing];
|
||||
type = (([[message objectForKey:MGMIID] intValue]==0 || ![[[messages objectAtIndex:[[message objectForKey:MGMIID] intValue]-1] objectForKey:MGMIYou] boolValue]) ? 1 : 2);
|
||||
if (type==2)
|
||||
[classes addObject:MGMTCNext];
|
||||
[message setObject:yPhotoPath forKey:MGMTPhoto];
|
||||
[message setObject:NSFullUserName() forKey:MGMTName];
|
||||
[message setObject:[messageInfo objectForKey:MGMTUserNumber] forKey:MGMIPhoneNumber];
|
||||
} else {
|
||||
[classes addObject:MGMTCIncoming];
|
||||
type = (([[message objectForKey:MGMIID] intValue]==0 || [[[messages objectAtIndex:[[message objectForKey:MGMIID] intValue]-1] objectForKey:MGMIYou] boolValue]) ? 3 : 4);
|
||||
if (type==4)
|
||||
[classes addObject:MGMTCNext];
|
||||
[message setObject:tPhotoPath forKey:MGMTPhoto];
|
||||
[message setObject:[messageInfo objectForKey:MGMTInName] forKey:MGMTName];
|
||||
[message setObject:[messageInfo objectForKey:MGMIPhoneNumber] forKey:MGMIPhoneNumber];
|
||||
}
|
||||
[classes addObject:MGMTCMessage];
|
||||
if (![[NSUserDefaults standardUserDefaults] boolForKey:MGMTShowIcons])
|
||||
[classes addObject:MGMTCHideIcons];
|
||||
NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
|
||||
[formatter setDateFormat:[[[manager themeManager] variant] objectForKey:MGMTDate]];
|
||||
[SMSView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"newMessage('%@', '%@', '%@', %@, '%@', '%@', '%@', %d);", [[message objectForKey:MGMIText] javascriptEscape], [[message objectForKey:MGMTPhoto] javascriptEscape], [[message objectForKey:MGMITime] javascriptEscape], [message objectForKey:MGMIID], [[message objectForKey:MGMTName] javascriptEscape], [[[message objectForKey:MGMIPhoneNumber] readableNumber] javascriptEscape], [formatter stringFromDate:[messageInfo objectForKey:MGMITime]], type]];
|
||||
[SMSView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"newMessage('%@', '%@', '%@', %@, '%@', '%@', '%@', %d, '%@');", [[[manager themeManager] htmlTextFromMessage:message] javascriptEscape], [[message objectForKey:MGMTPhoto] javascriptEscape], [[message objectForKey:MGMITime] javascriptEscape], [message objectForKey:MGMIID], [[message objectForKey:MGMTName] javascriptEscape], [[[message objectForKey:MGMIPhoneNumber] readableNumber] javascriptEscape], [formatter stringFromDate:[messageInfo objectForKey:MGMITime]], type, [classes componentsJoinedByString:@" "]]];
|
||||
[SMSView stringByEvaluatingJavaScriptFromString:@"scrollToBottom();"];
|
||||
}
|
||||
|
||||
@ -266,11 +276,21 @@
|
||||
[self close:self];
|
||||
}
|
||||
|
||||
- (float)splitView:(NSSplitView *)sender constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset {
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (float)splitView:(NSSplitView *)sender constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset
|
||||
#else
|
||||
- (CGFloat)splitView:(NSSplitView *)sender constrainMinCoordinate:(CGFloat)proposedMin ofSubviewAt:(NSInteger)offset
|
||||
#endif
|
||||
{
|
||||
bottomMax = [[[sender subviews] objectAtIndex:1] frame].size.height;
|
||||
return 50.0;
|
||||
}
|
||||
- (float)splitView:(NSSplitView *)sender constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset{
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
- (float)splitView:(NSSplitView *)sender constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset
|
||||
#else
|
||||
- (CGFloat)splitView:(NSSplitView *)sender constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)offset
|
||||
#endif
|
||||
{
|
||||
bottomMax = [[[sender subviews] objectAtIndex:1] frame].size.height;
|
||||
return proposedMax - 33.0;
|
||||
}
|
||||
|
630
FFmpeg/install
630
FFmpeg/install
@ -1,28 +1,161 @@
|
||||
#!/bin/bash
|
||||
|
||||
#PPCFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch ppc"
|
||||
PPCFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -arch ppc"
|
||||
#PPCFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch ppc"
|
||||
PPCFLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -arch ppc"
|
||||
PPCCC="/usr/bin/gcc-4.0"
|
||||
PPCCXX="/usr/bin/g++-4.0"
|
||||
PPCHOST="ppc-apple-darwin8"
|
||||
PPCPATH="${PWD}/opt-ppc"
|
||||
PPCLDFLAGS="-arch ppc"
|
||||
PPCLDFLAGS="${PPCFLAGS}"
|
||||
|
||||
#I386FLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386"
|
||||
I386FLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -arch i386"
|
||||
#I386FLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch i386"
|
||||
I386FLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -arch i386"
|
||||
I386CC="/usr/bin/gcc-4.0"
|
||||
I386CXX="/usr/bin/g++-4.0"
|
||||
I386HOST="i386-apple-darwin8"
|
||||
I386PATH="${PWD}/opt-i386"
|
||||
I386LDFLAGS="-arch i386"
|
||||
I386LDFLAGS="${I386FLAGS}"
|
||||
|
||||
#X86_64FLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.5 -arch x86_64"
|
||||
X86_64FLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 -arch x86_64"
|
||||
#X86_64FLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.5 -arch x86_64"
|
||||
X86_64FLAGS="-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 -arch x86_64"
|
||||
X86_64CC="/usr/bin/gcc-4.0"
|
||||
X86_64CXX="/usr/bin/g++-4.0"
|
||||
X86_64HOST="x86_64-apple-darwin9"
|
||||
X86_64PATH="${PWD}/opt-x86_64"
|
||||
X86_64LDFLAGS="-arch x86_64"
|
||||
X86_64LDFLAGS="${X86_64FLAGS}"
|
||||
|
||||
STANDARD="--disable-bzlib --enable-pthreads --disable-network --enable-small --disable-ffprobe --disable-ffplay --disable-ffserver --disable-decoder=atrac3 --disable-shared --enable-static \
|
||||
--disable-decoders \
|
||||
--enable-decoder=aac \
|
||||
--enable-decoder=theora \
|
||||
--enable-decoder=vorbis \
|
||||
--enable-decoder=wmavoice \
|
||||
--enable-decoder=wmav2 \
|
||||
--enable-decoder=wmav1 \
|
||||
--enable-decoder=wmapro \
|
||||
--enable-decoder=wavpack \
|
||||
--enable-decoder=mp3on4 \
|
||||
--enable-decoder=mp3adu \
|
||||
--enable-decoder=mp3 \
|
||||
--enable-decoder=mp2 \
|
||||
--enable-decoder=mp1 \
|
||||
--enable-decoder=pcm_zork \
|
||||
--enable-decoder=pcm_u8 \
|
||||
--enable-decoder=pcm_u32le \
|
||||
--enable-decoder=pcm_u32be \
|
||||
--enable-decoder=pcm_u24le \
|
||||
--enable-decoder=pcm_u24be \
|
||||
--enable-decoder=pcm_u16le \
|
||||
--enable-decoder=pcm_u16be \
|
||||
--enable-decoder=pcm_s8 \
|
||||
--enable-decoder=pcm_s32le \
|
||||
--enable-decoder=pcm_s32be \
|
||||
--enable-decoder=pcm_s24le \
|
||||
--enable-decoder=pcm_s24daud \
|
||||
--enable-decoder=pcm_s24be \
|
||||
--enable-decoder=pcm_s16le_planar \
|
||||
--enable-decoder=pcm_s16le \
|
||||
--enable-decoder=pcm_s16be \
|
||||
--enable-decoder=pcm_mulaw \
|
||||
--enable-decoder=pcm_f64le \
|
||||
--enable-decoder=pcm_f64be \
|
||||
--enable-decoder=pcm_f32le \
|
||||
--enable-decoder=pcm_f32be \
|
||||
--enable-decoder=pcm_dvd \
|
||||
--enable-decoder=pcm_bluray \
|
||||
--enable-decoder=pcm_alaw \
|
||||
--enable-decoder=flac \
|
||||
--disable-encoders \
|
||||
--enable-encoder=aac \
|
||||
--enable-encoder=flac \
|
||||
--enable-encoder=pcm_alaw \
|
||||
--enable-encoder=pcm_f32be \
|
||||
--enable-encoder=pcm_f32le \
|
||||
--enable-encoder=pcm_f64be \
|
||||
--enable-encoder=pcm_f64le \
|
||||
--enable-encoder=pcm_mulaw \
|
||||
--enable-encoder=pcm_s16be \
|
||||
--enable-encoder=pcm_s16le \
|
||||
--enable-encoder=pcm_s24be \
|
||||
--enable-encoder=pcm_s24daud \
|
||||
--enable-encoder=pcm_s24le \
|
||||
--enable-encoder=pcm_s32be \
|
||||
--enable-encoder=pcm_s32le \
|
||||
--enable-encoder=pcm_s8 \
|
||||
--enable-encoder=pcm_u16be \
|
||||
--enable-encoder=pcm_u16le \
|
||||
--enable-encoder=pcm_u24be \
|
||||
--enable-encoder=pcm_u24le \
|
||||
--enable-encoder=pcm_u32be \
|
||||
--enable-encoder=pcm_u32le \
|
||||
--enable-encoder=pcm_u8 \
|
||||
--enable-encoder=pcm_zork \
|
||||
--enable-encoder=wmav1 \
|
||||
--enable-encoder=wmav2 \
|
||||
--disable-demuxers \
|
||||
--enable-demuxer=aac \
|
||||
--enable-demuxer=ac3 \
|
||||
--enable-demuxer=aiff \
|
||||
--enable-demuxer=au \
|
||||
--enable-demuxer=caf \
|
||||
--enable-demuxer=flac \
|
||||
--enable-demuxer=mp3 \
|
||||
--enable-demuxer=ogg \
|
||||
--enable-demuxer=pcm_alaw \
|
||||
--enable-demuxer=pcm_f32be \
|
||||
--enable-demuxer=pcm_f32le \
|
||||
--enable-demuxer=pcm_f64be \
|
||||
--enable-demuxer=pcm_f64le \
|
||||
--enable-demuxer=pcm_mulaw \
|
||||
--enable-demuxer=pcm_s16be \
|
||||
--enable-demuxer=pcm_s16le \
|
||||
--enable-demuxer=pcm_s24be \
|
||||
--enable-demuxer=pcm_s24le \
|
||||
--enable-demuxer=pcm_s32be \
|
||||
--enable-demuxer=pcm_s32le \
|
||||
--enable-demuxer=pcm_s8 \
|
||||
--enable-demuxer=pcm_u16be \
|
||||
--enable-demuxer=pcm_u16le \
|
||||
--enable-demuxer=pcm_u24be \
|
||||
--enable-demuxer=pcm_u24le \
|
||||
--enable-demuxer=pcm_u32be \
|
||||
--enable-demuxer=pcm_u32le \
|
||||
--enable-demuxer=pcm_u8 \
|
||||
--enable-demuxer=wav \
|
||||
--disable-muxers \
|
||||
--enable-muxer=ac3 \
|
||||
--enable-muxer=aiff \
|
||||
--enable-muxer=au \
|
||||
--enable-muxer=flac \
|
||||
--enable-muxer=matroska_audio \
|
||||
--enable-muxer=mp3 \
|
||||
--enable-muxer=ogg \
|
||||
--enable-muxer=pcm_alaw \
|
||||
--enable-muxer=pcm_f32be \
|
||||
--enable-muxer=pcm_f32le \
|
||||
--enable-muxer=pcm_f64be \
|
||||
--enable-muxer=pcm_f64le \
|
||||
--enable-muxer=pcm_mulaw \
|
||||
--enable-muxer=pcm_s16be \
|
||||
--enable-muxer=pcm_s16le \
|
||||
--enable-muxer=pcm_s24be \
|
||||
--enable-muxer=pcm_s24le \
|
||||
--enable-muxer=pcm_s32be \
|
||||
--enable-muxer=pcm_s32le \
|
||||
--enable-muxer=pcm_s8 \
|
||||
--enable-muxer=pcm_u16be \
|
||||
--enable-muxer=pcm_u16le \
|
||||
--enable-muxer=pcm_u24be \
|
||||
--enable-muxer=pcm_u24le \
|
||||
--enable-muxer=pcm_u32be \
|
||||
--enable-muxer=pcm_u32le \
|
||||
--enable-muxer=pcm_u8 \
|
||||
--enable-muxer=voc \
|
||||
--enable-muxer=wav \
|
||||
--disable-filters \
|
||||
--enable-filter=format \
|
||||
--enable-filter=noformat \
|
||||
--enable-filter=null \
|
||||
--enable-filter=nullsink \
|
||||
--enable-filter=nullsrc \
|
||||
--enable-filter=slicify"
|
||||
|
||||
FFMPEGNAME="ffmpeg"
|
||||
|
||||
@ -34,6 +167,71 @@ if [ "$1" = "clean" ]; then
|
||||
rm -fR opt-i386 opt-x86_64 opt-ppc
|
||||
rm -fR opt
|
||||
fi
|
||||
if [ "$1" = "ios" ]; then
|
||||
IOS6FLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk -miphoneos-version-min=3.1 -arch armv6"
|
||||
IOS6CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2"
|
||||
IOS6HOST="arm-apple-darwin10"
|
||||
IOS6PATH="${PWD}/opt-ios6"
|
||||
IOS6LDFLAGS="${IOS6FLAGS}"
|
||||
|
||||
IOS7FLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk -miphoneos-version-min=3.1 -arch armv7"
|
||||
IOS7CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2"
|
||||
IOS7HOST="arm-apple-darwin10"
|
||||
IOS7PATH="${PWD}/opt-ios7"
|
||||
IOS7LDFLAGS="${IOS7FLAGS}"
|
||||
|
||||
SIMULATORFLAGS="-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -miphoneos-version-min=3.1"
|
||||
SIMULATORCC="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2"
|
||||
SIMULATORHOST="i686-apple-darwin10"
|
||||
SIMULATORPATH="${PWD}/opt-simulator"
|
||||
SIMULATORLDFLAGS="${SIMULATORFLAGS}"
|
||||
|
||||
echo "Copying FFmpeg"
|
||||
cp -R ${FFMPEGNAME} ${FFMPEGNAME}-ios6
|
||||
cp -R ${FFMPEGNAME}-ios6 ${FFMPEGNAME}-ios7
|
||||
cp -R ${FFMPEGNAME}-ios6 ${FFMPEGNAME}-simulator
|
||||
|
||||
echo "Configuring FFmpeg"
|
||||
cd ${FFMPEGNAME}-ios6
|
||||
LDFLAGS="${IOS6LDFLAGS} -L${IOS6PATH}/lib" CFLAGS="${IOS6FLAGS} -I${IOS6PATH}/include -mdynamic-no-pic" CC="${IOS6CC}" ./configure --prefix="${IOS6PATH}" --arch=armv6 --cc="${IOS6CC}" --disable-mmx --disable-iwmmxt --disable-armvfp --disable-armv5te --enable-armv6 --disable-asm --enable-cross-compile --target-os=darwin ${STANDARD}
|
||||
cd ../${FFMPEGNAME}-ios7
|
||||
LDFLAGS="${IOS7LDFLAGS} -L${IOS7PATH}/lib" CFLAGS="${IOS7FLAGS} -I${IOS7PATH}/include -mdynamic-no-pic" CC="${IOS7CC}" ./configure --prefix="${IOS7PATH}" --arch=armv7 --cc="${IOS7CC}" --disable-mmx --disable-iwmmxt --disable-armvfp --disable-armv5te --enable-armv6 --disable-asm --enable-cross-compile --target-os=darwin ${STANDARD}
|
||||
cd ../${FFMPEGNAME}-simulator
|
||||
LDFLAGS="${SIMULATORLDFLAGS} -L${SIMULATORPATH}/lib" CFLAGS="${SIMULATORFLAGS} -I${SIMULATORPATH}/include -mdynamic-no-pic" CC="${SIMULATORCC}" ./configure --prefix="${SIMULATORPATH}" --cc="${SIMULATORCC}" --disable-asm ${STANDARD}
|
||||
|
||||
echo "Compiling FFmpeg"
|
||||
cd ../${FFMPEGNAME}-ios6
|
||||
make
|
||||
cd ../${FFMPEGNAME}-ios7
|
||||
make
|
||||
cd ../${FFMPEGNAME}-simulator
|
||||
make
|
||||
|
||||
echo "Installing FFmpeg"
|
||||
cd ../${FFMPEGNAME}-ios6
|
||||
make install
|
||||
cd ../${FFMPEGNAME}-ios7
|
||||
make install
|
||||
cd ../${FFMPEGNAME}-simulator
|
||||
make install
|
||||
|
||||
echo "Making FFmpeg Universal"
|
||||
cd ../
|
||||
|
||||
mkdir -p ./opt/bin
|
||||
mkdir -p ./opt/lib
|
||||
|
||||
cp -R "${IOS6PATH}/include" ./opt/include
|
||||
cp ./${FFMPEGNAME}-ios6/libavcodec/audioconvert.h ./opt/include/libavcodec/audioconvert.h
|
||||
cp ./${FFMPEGNAME}-ios6/libavcodec/colorspace.h ./opt/include/libavcodec/colorspace.h
|
||||
cp ./${FFMPEGNAME}-ios6/config.h ./opt/include/ffconfig.h
|
||||
lipo -create "${IOS6PATH}/lib/libavcodec.a" "${IOS7PATH}/lib/libavcodec.a" "${SIMULATORPATH}/lib/libavcodec.a" -output ./opt/lib/libavcodec-ios.a
|
||||
lipo -create "${IOS6PATH}/lib/libavdevice.a" "${IOS7PATH}/lib/libavdevice.a" "${SIMULATORPATH}/lib/libavdevice.a" -output ./opt/lib/libavdevice-ios.a
|
||||
lipo -create "${IOS6PATH}/lib/libavformat.a" "${IOS7PATH}/lib/libavformat.a" "${SIMULATORPATH}/lib/libavformat.a" -output ./opt/lib/libavformat-ios.a
|
||||
lipo -create "${IOS6PATH}/lib/libavutil.a" "${IOS7PATH}/lib/libavutil.a" "${SIMULATORPATH}/lib/libavutil.a" -output ./opt/lib/libavutil-ios.a
|
||||
lipo -create "${IOS6PATH}/lib/libswscale.a" "${IOS7PATH}/lib/libswscale.a" "${SIMULATORPATH}/lib/libswscale.a" -output ./opt/lib/libswscale-ios.a
|
||||
lipo -create "${IOS6PATH}/bin/ffmpeg" "${IOS7PATH}/bin/ffmpeg" "${SIMULATORPATH}/bin/ffmpeg" -output ./opt/bin/ffmpeg-ios
|
||||
fi
|
||||
if [ "$1" = "" ]; then
|
||||
echo "Copying FFmpeg"
|
||||
cp -R ${FFMPEGNAME} ${FFMPEGNAME}-ppc
|
||||
@ -42,413 +240,11 @@ if [ "$1" = "" ]; then
|
||||
|
||||
echo "Configuring FFmpeg"
|
||||
cd ${FFMPEGNAME}-ppc
|
||||
LDFLAGS="${PPCLDFLAGS} -L${PPCPATH}/lib" CFLAGS="${PPCFLAGS} -I${PPCPATH}/include -mdynamic-no-pic" CXXFLAGS="${PPCFLAGS} -I${PPCPATH}/include -mdynamic-no-pic" CC="${PPCCC}" CXX="${PPCCXX}" ./configure --prefix="${PPCPATH}" --arch=ppc --disable-bzlib --enable-pthreads --disable-network --enable-small --disable-ffprobe --disable-ffplay --disable-ffserver --disable-decoder=atrac3 --disable-shared --enable-static \
|
||||
--disable-decoders \
|
||||
--enable-decoder=aac \
|
||||
--enable-decoder=theora \
|
||||
--enable-decoder=vorbis \
|
||||
--enable-decoder=wmavoice \
|
||||
--enable-decoder=wmav2 \
|
||||
--enable-decoder=wmav1 \
|
||||
--enable-decoder=wmapro \
|
||||
--enable-decoder=wavpack \
|
||||
--enable-decoder=mp3on4 \
|
||||
--enable-decoder=mp3adu \
|
||||
--enable-decoder=mp3 \
|
||||
--enable-decoder=mp2 \
|
||||
--enable-decoder=mp1 \
|
||||
--enable-decoder=pcm_zork \
|
||||
--enable-decoder=pcm_u8 \
|
||||
--enable-decoder=pcm_u32le \
|
||||
--enable-decoder=pcm_u32be \
|
||||
--enable-decoder=pcm_u24le \
|
||||
--enable-decoder=pcm_u24be \
|
||||
--enable-decoder=pcm_u16le \
|
||||
--enable-decoder=pcm_u16be \
|
||||
--enable-decoder=pcm_s8 \
|
||||
--enable-decoder=pcm_s32le \
|
||||
--enable-decoder=pcm_s32be \
|
||||
--enable-decoder=pcm_s24le \
|
||||
--enable-decoder=pcm_s24daud \
|
||||
--enable-decoder=pcm_s24be \
|
||||
--enable-decoder=pcm_s16le_planar \
|
||||
--enable-decoder=pcm_s16le \
|
||||
--enable-decoder=pcm_s16be \
|
||||
--enable-decoder=pcm_mulaw \
|
||||
--enable-decoder=pcm_f64le \
|
||||
--enable-decoder=pcm_f64be \
|
||||
--enable-decoder=pcm_f32le \
|
||||
--enable-decoder=pcm_f32be \
|
||||
--enable-decoder=pcm_dvd \
|
||||
--enable-decoder=pcm_bluray \
|
||||
--enable-decoder=pcm_alaw \
|
||||
--enable-decoder=flac \
|
||||
--disable-encoders \
|
||||
--enable-encoder=aac \
|
||||
--enable-encoder=flac \
|
||||
--enable-encoder=pcm_alaw \
|
||||
--enable-encoder=pcm_f32be \
|
||||
--enable-encoder=pcm_f32le \
|
||||
--enable-encoder=pcm_f64be \
|
||||
--enable-encoder=pcm_f64le \
|
||||
--enable-encoder=pcm_mulaw \
|
||||
--enable-encoder=pcm_s16be \
|
||||
--enable-encoder=pcm_s16le \
|
||||
--enable-encoder=pcm_s24be \
|
||||
--enable-encoder=pcm_s24daud \
|
||||
--enable-encoder=pcm_s24le \
|
||||
--enable-encoder=pcm_s32be \
|
||||
--enable-encoder=pcm_s32le \
|
||||
--enable-encoder=pcm_s8 \
|
||||
--enable-encoder=pcm_u16be \
|
||||
--enable-encoder=pcm_u16le \
|
||||
--enable-encoder=pcm_u24be \
|
||||
--enable-encoder=pcm_u24le \
|
||||
--enable-encoder=pcm_u32be \
|
||||
--enable-encoder=pcm_u32le \
|
||||
--enable-encoder=pcm_u8 \
|
||||
--enable-encoder=pcm_zork \
|
||||
--enable-encoder=wmav1 \
|
||||
--enable-encoder=wmav2 \
|
||||
--disable-demuxers \
|
||||
--enable-demuxer=aac \
|
||||
--enable-demuxer=ac3 \
|
||||
--enable-demuxer=aiff \
|
||||
--enable-demuxer=au \
|
||||
--enable-demuxer=caf \
|
||||
--enable-demuxer=flac \
|
||||
--enable-demuxer=mp3 \
|
||||
--enable-demuxer=ogg \
|
||||
--enable-demuxer=pcm_alaw \
|
||||
--enable-demuxer=pcm_f32be \
|
||||
--enable-demuxer=pcm_f32le \
|
||||
--enable-demuxer=pcm_f64be \
|
||||
--enable-demuxer=pcm_f64le \
|
||||
--enable-demuxer=pcm_mulaw \
|
||||
--enable-demuxer=pcm_s16be \
|
||||
--enable-demuxer=pcm_s16le \
|
||||
--enable-demuxer=pcm_s24be \
|
||||
--enable-demuxer=pcm_s24le \
|
||||
--enable-demuxer=pcm_s32be \
|
||||
--enable-demuxer=pcm_s32le \
|
||||
--enable-demuxer=pcm_s8 \
|
||||
--enable-demuxer=pcm_u16be \
|
||||
--enable-demuxer=pcm_u16le \
|
||||
--enable-demuxer=pcm_u24be \
|
||||
--enable-demuxer=pcm_u24le \
|
||||
--enable-demuxer=pcm_u32be \
|
||||
--enable-demuxer=pcm_u32le \
|
||||
--enable-demuxer=pcm_u8 \
|
||||
--enable-demuxer=wav \
|
||||
--disable-muxers \
|
||||
--enable-muxer=ac3 \
|
||||
--enable-muxer=aiff \
|
||||
--enable-muxer=au \
|
||||
--enable-muxer=flac \
|
||||
--enable-muxer=matroska_audio \
|
||||
--enable-muxer=mp3 \
|
||||
--enable-muxer=ogg \
|
||||
--enable-muxer=pcm_alaw \
|
||||
--enable-muxer=pcm_f32be \
|
||||
--enable-muxer=pcm_f32le \
|
||||
--enable-muxer=pcm_f64be \
|
||||
--enable-muxer=pcm_f64le \
|
||||
--enable-muxer=pcm_mulaw \
|
||||
--enable-muxer=pcm_s16be \
|
||||
--enable-muxer=pcm_s16le \
|
||||
--enable-muxer=pcm_s24be \
|
||||
--enable-muxer=pcm_s24le \
|
||||
--enable-muxer=pcm_s32be \
|
||||
--enable-muxer=pcm_s32le \
|
||||
--enable-muxer=pcm_s8 \
|
||||
--enable-muxer=pcm_u16be \
|
||||
--enable-muxer=pcm_u16le \
|
||||
--enable-muxer=pcm_u24be \
|
||||
--enable-muxer=pcm_u24le \
|
||||
--enable-muxer=pcm_u32be \
|
||||
--enable-muxer=pcm_u32le \
|
||||
--enable-muxer=pcm_u8 \
|
||||
--enable-muxer=voc \
|
||||
--enable-muxer=wav \
|
||||
--disable-filters \
|
||||
--enable-filter=format \
|
||||
--enable-filter=noformat \
|
||||
--enable-filter=null \
|
||||
--enable-filter=nullsink \
|
||||
--enable-filter=nullsrc \
|
||||
--enable-filter=slicify
|
||||
LDFLAGS="${PPCLDFLAGS} -L${PPCPATH}/lib" CFLAGS="${PPCFLAGS} -I${PPCPATH}/include -mdynamic-no-pic" CC="${PPCCC}" ./configure --prefix="${PPCPATH}" --arch=ppc ${STANDARD}
|
||||
cd ../${FFMPEGNAME}-i386
|
||||
LDFLAGS="${I386LDFLAGS} -L${I386PATH}/lib" CFLAGS="${I386FLAGS} -I${I386PATH}/include -mdynamic-no-pic" CXXFLAGS="${I386FLAGS} -I${I386PATH}/include -mdynamic-no-pic" CC="${I386CC}" CXX="${I386CXX}" ./configure --prefix="${I386PATH}" --arch=i386 --disable-bzlib --enable-pthreads --disable-network --enable-small --disable-yasm --disable-ffprobe --disable-ffplay --disable-ffserver --disable-decoder=atrac3 --disable-shared --enable-static \
|
||||
--disable-decoders \
|
||||
--enable-decoder=aac \
|
||||
--enable-decoder=theora \
|
||||
--enable-decoder=vorbis \
|
||||
--enable-decoder=wmavoice \
|
||||
--enable-decoder=wmav2 \
|
||||
--enable-decoder=wmav1 \
|
||||
--enable-decoder=wmapro \
|
||||
--enable-decoder=wavpack \
|
||||
--enable-decoder=mp3on4 \
|
||||
--enable-decoder=mp3adu \
|
||||
--enable-decoder=mp3 \
|
||||
--enable-decoder=mp2 \
|
||||
--enable-decoder=mp1 \
|
||||
--enable-decoder=pcm_zork \
|
||||
--enable-decoder=pcm_u8 \
|
||||
--enable-decoder=pcm_u32le \
|
||||
--enable-decoder=pcm_u32be \
|
||||
--enable-decoder=pcm_u24le \
|
||||
--enable-decoder=pcm_u24be \
|
||||
--enable-decoder=pcm_u16le \
|
||||
--enable-decoder=pcm_u16be \
|
||||
--enable-decoder=pcm_s8 \
|
||||
--enable-decoder=pcm_s32le \
|
||||
--enable-decoder=pcm_s32be \
|
||||
--enable-decoder=pcm_s24le \
|
||||
--enable-decoder=pcm_s24daud \
|
||||
--enable-decoder=pcm_s24be \
|
||||
--enable-decoder=pcm_s16le_planar \
|
||||
--enable-decoder=pcm_s16le \
|
||||
--enable-decoder=pcm_s16be \
|
||||
--enable-decoder=pcm_mulaw \
|
||||
--enable-decoder=pcm_f64le \
|
||||
--enable-decoder=pcm_f64be \
|
||||
--enable-decoder=pcm_f32le \
|
||||
--enable-decoder=pcm_f32be \
|
||||
--enable-decoder=pcm_dvd \
|
||||
--enable-decoder=pcm_bluray \
|
||||
--enable-decoder=pcm_alaw \
|
||||
--enable-decoder=flac \
|
||||
--disable-encoders \
|
||||
--enable-encoder=aac \
|
||||
--enable-encoder=flac \
|
||||
--enable-encoder=pcm_alaw \
|
||||
--enable-encoder=pcm_f32be \
|
||||
--enable-encoder=pcm_f32le \
|
||||
--enable-encoder=pcm_f64be \
|
||||
--enable-encoder=pcm_f64le \
|
||||
--enable-encoder=pcm_mulaw \
|
||||
--enable-encoder=pcm_s16be \
|
||||
--enable-encoder=pcm_s16le \
|
||||
--enable-encoder=pcm_s24be \
|
||||
--enable-encoder=pcm_s24daud \
|
||||
--enable-encoder=pcm_s24le \
|
||||
--enable-encoder=pcm_s32be \
|
||||
--enable-encoder=pcm_s32le \
|
||||
--enable-encoder=pcm_s8 \
|
||||
--enable-encoder=pcm_u16be \
|
||||
--enable-encoder=pcm_u16le \
|
||||
--enable-encoder=pcm_u24be \
|
||||
--enable-encoder=pcm_u24le \
|
||||
--enable-encoder=pcm_u32be \
|
||||
--enable-encoder=pcm_u32le \
|
||||
--enable-encoder=pcm_u8 \
|
||||
--enable-encoder=pcm_zork \
|
||||
--enable-encoder=wmav1 \
|
||||
--enable-encoder=wmav2 \
|
||||
--disable-demuxers \
|
||||
--enable-demuxer=aac \
|
||||
--enable-demuxer=ac3 \
|
||||
--enable-demuxer=aiff \
|
||||
--enable-demuxer=au \
|
||||
--enable-demuxer=caf \
|
||||
--enable-demuxer=flac \
|
||||
--enable-demuxer=mp3 \
|
||||
--enable-demuxer=ogg \
|
||||
--enable-demuxer=pcm_alaw \
|
||||
--enable-demuxer=pcm_f32be \
|
||||
--enable-demuxer=pcm_f32le \
|
||||
--enable-demuxer=pcm_f64be \
|
||||
--enable-demuxer=pcm_f64le \
|
||||
--enable-demuxer=pcm_mulaw \
|
||||
--enable-demuxer=pcm_s16be \
|
||||
--enable-demuxer=pcm_s16le \
|
||||
--enable-demuxer=pcm_s24be \
|
||||
--enable-demuxer=pcm_s24le \
|
||||
--enable-demuxer=pcm_s32be \
|
||||
--enable-demuxer=pcm_s32le \
|
||||
--enable-demuxer=pcm_s8 \
|
||||
--enable-demuxer=pcm_u16be \
|
||||
--enable-demuxer=pcm_u16le \
|
||||
--enable-demuxer=pcm_u24be \
|
||||
--enable-demuxer=pcm_u24le \
|
||||
--enable-demuxer=pcm_u32be \
|
||||
--enable-demuxer=pcm_u32le \
|
||||
--enable-demuxer=pcm_u8 \
|
||||
--enable-demuxer=wav \
|
||||
--disable-muxers \
|
||||
--enable-muxer=ac3 \
|
||||
--enable-muxer=aiff \
|
||||
--enable-muxer=au \
|
||||
--enable-muxer=flac \
|
||||
--enable-muxer=matroska_audio \
|
||||
--enable-muxer=mp3 \
|
||||
--enable-muxer=ogg \
|
||||
--enable-muxer=pcm_alaw \
|
||||
--enable-muxer=pcm_f32be \
|
||||
--enable-muxer=pcm_f32le \
|
||||
--enable-muxer=pcm_f64be \
|
||||
--enable-muxer=pcm_f64le \
|
||||
--enable-muxer=pcm_mulaw \
|
||||
--enable-muxer=pcm_s16be \
|
||||
--enable-muxer=pcm_s16le \
|
||||
--enable-muxer=pcm_s24be \
|
||||
--enable-muxer=pcm_s24le \
|
||||
--enable-muxer=pcm_s32be \
|
||||
--enable-muxer=pcm_s32le \
|
||||
--enable-muxer=pcm_s8 \
|
||||
--enable-muxer=pcm_u16be \
|
||||
--enable-muxer=pcm_u16le \
|
||||
--enable-muxer=pcm_u24be \
|
||||
--enable-muxer=pcm_u24le \
|
||||
--enable-muxer=pcm_u32be \
|
||||
--enable-muxer=pcm_u32le \
|
||||
--enable-muxer=pcm_u8 \
|
||||
--enable-muxer=voc \
|
||||
--enable-muxer=wav \
|
||||
--disable-filters \
|
||||
--enable-filter=format \
|
||||
--enable-filter=noformat \
|
||||
--enable-filter=null \
|
||||
--enable-filter=nullsink \
|
||||
--enable-filter=nullsrc \
|
||||
--enable-filter=slicify
|
||||
LDFLAGS="${I386LDFLAGS} -L${I386PATH}/lib" CFLAGS="${I386FLAGS} -I${I386PATH}/include -mdynamic-no-pic" CC="${I386CC}" ./configure --prefix="${I386PATH}" --arch=i386 ${STANDARD}
|
||||
cd ../${FFMPEGNAME}-x86_64
|
||||
LDFLAGS="${X86_64LDFLAGS} -L${X86_64PATH}/lib" CFLAGS="${X86_64FLAGS} -I${X86_64PATH}/include -mdynamic-no-pic" CXXFLAGS="${X86_64FLAGS} -I${X86_64PATH}/include -mdynamic-no-pic" CC="${X86_64CC}" CXX="${X86_64CXX}" ./configure --prefix="${X86_64PATH}" --target-os=darwin --arch=x86_64 --disable-bzlib --enable-pthreads --disable-network --enable-small --disable-yasm --disable-ffprobe --disable-ffplay --disable-ffserver --disable-decoder=atrac3 --disable-shared --enable-static --enable-cross-compile \
|
||||
--disable-decoders \
|
||||
--enable-decoder=aac \
|
||||
--enable-decoder=theora \
|
||||
--enable-decoder=vorbis \
|
||||
--enable-decoder=wmavoice \
|
||||
--enable-decoder=wmav2 \
|
||||
--enable-decoder=wmav1 \
|
||||
--enable-decoder=wmapro \
|
||||
--enable-decoder=wavpack \
|
||||
--enable-decoder=mp3on4 \
|
||||
--enable-decoder=mp3adu \
|
||||
--enable-decoder=mp3 \
|
||||
--enable-decoder=mp2 \
|
||||
--enable-decoder=mp1 \
|
||||
--enable-decoder=pcm_zork \
|
||||
--enable-decoder=pcm_u8 \
|
||||
--enable-decoder=pcm_u32le \
|
||||
--enable-decoder=pcm_u32be \
|
||||
--enable-decoder=pcm_u24le \
|
||||
--enable-decoder=pcm_u24be \
|
||||
--enable-decoder=pcm_u16le \
|
||||
--enable-decoder=pcm_u16be \
|
||||
--enable-decoder=pcm_s8 \
|
||||
--enable-decoder=pcm_s32le \
|
||||
--enable-decoder=pcm_s32be \
|
||||
--enable-decoder=pcm_s24le \
|
||||
--enable-decoder=pcm_s24daud \
|
||||
--enable-decoder=pcm_s24be \
|
||||
--enable-decoder=pcm_s16le_planar \
|
||||
--enable-decoder=pcm_s16le \
|
||||
--enable-decoder=pcm_s16be \
|
||||
--enable-decoder=pcm_mulaw \
|
||||
--enable-decoder=pcm_f64le \
|
||||
--enable-decoder=pcm_f64be \
|
||||
--enable-decoder=pcm_f32le \
|
||||
--enable-decoder=pcm_f32be \
|
||||
--enable-decoder=pcm_dvd \
|
||||
--enable-decoder=pcm_bluray \
|
||||
--enable-decoder=pcm_alaw \
|
||||
--enable-decoder=flac \
|
||||
--disable-encoders \
|
||||
--enable-encoder=aac \
|
||||
--enable-encoder=flac \
|
||||
--enable-encoder=pcm_alaw \
|
||||
--enable-encoder=pcm_f32be \
|
||||
--enable-encoder=pcm_f32le \
|
||||
--enable-encoder=pcm_f64be \
|
||||
--enable-encoder=pcm_f64le \
|
||||
--enable-encoder=pcm_mulaw \
|
||||
--enable-encoder=pcm_s16be \
|
||||
--enable-encoder=pcm_s16le \
|
||||
--enable-encoder=pcm_s24be \
|
||||
--enable-encoder=pcm_s24daud \
|
||||
--enable-encoder=pcm_s24le \
|
||||
--enable-encoder=pcm_s32be \
|
||||
--enable-encoder=pcm_s32le \
|
||||
--enable-encoder=pcm_s8 \
|
||||
--enable-encoder=pcm_u16be \
|
||||
--enable-encoder=pcm_u16le \
|
||||
--enable-encoder=pcm_u24be \
|
||||
--enable-encoder=pcm_u24le \
|
||||
--enable-encoder=pcm_u32be \
|
||||
--enable-encoder=pcm_u32le \
|
||||
--enable-encoder=pcm_u8 \
|
||||
--enable-encoder=pcm_zork \
|
||||
--enable-encoder=wmav1 \
|
||||
--enable-encoder=wmav2 \
|
||||
--disable-demuxers \
|
||||
--enable-demuxer=aac \
|
||||
--enable-demuxer=ac3 \
|
||||
--enable-demuxer=aiff \
|
||||
--enable-demuxer=au \
|
||||
--enable-demuxer=caf \
|
||||
--enable-demuxer=flac \
|
||||
--enable-demuxer=mp3 \
|
||||
--enable-demuxer=ogg \
|
||||
--enable-demuxer=pcm_alaw \
|
||||
--enable-demuxer=pcm_f32be \
|
||||
--enable-demuxer=pcm_f32le \
|
||||
--enable-demuxer=pcm_f64be \
|
||||
--enable-demuxer=pcm_f64le \
|
||||
--enable-demuxer=pcm_mulaw \
|
||||
--enable-demuxer=pcm_s16be \
|
||||
--enable-demuxer=pcm_s16le \
|
||||
--enable-demuxer=pcm_s24be \
|
||||
--enable-demuxer=pcm_s24le \
|
||||
--enable-demuxer=pcm_s32be \
|
||||
--enable-demuxer=pcm_s32le \
|
||||
--enable-demuxer=pcm_s8 \
|
||||
--enable-demuxer=pcm_u16be \
|
||||
--enable-demuxer=pcm_u16le \
|
||||
--enable-demuxer=pcm_u24be \
|
||||
--enable-demuxer=pcm_u24le \
|
||||
--enable-demuxer=pcm_u32be \
|
||||
--enable-demuxer=pcm_u32le \
|
||||
--enable-demuxer=pcm_u8 \
|
||||
--enable-demuxer=wav \
|
||||
--disable-muxers \
|
||||
--enable-muxer=ac3 \
|
||||
--enable-muxer=aiff \
|
||||
--enable-muxer=au \
|
||||
--enable-muxer=flac \
|
||||
--enable-muxer=matroska_audio \
|
||||
--enable-muxer=mp3 \
|
||||
--enable-muxer=ogg \
|
||||
--enable-muxer=pcm_alaw \
|
||||
--enable-muxer=pcm_f32be \
|
||||
--enable-muxer=pcm_f32le \
|
||||
--enable-muxer=pcm_f64be \
|
||||
--enable-muxer=pcm_f64le \
|
||||
--enable-muxer=pcm_mulaw \
|
||||
--enable-muxer=pcm_s16be \
|
||||
--enable-muxer=pcm_s16le \
|
||||
--enable-muxer=pcm_s24be \
|
||||
--enable-muxer=pcm_s24le \
|
||||
--enable-muxer=pcm_s32be \
|
||||
--enable-muxer=pcm_s32le \
|
||||
--enable-muxer=pcm_s8 \
|
||||
--enable-muxer=pcm_u16be \
|
||||
--enable-muxer=pcm_u16le \
|
||||
--enable-muxer=pcm_u24be \
|
||||
--enable-muxer=pcm_u24le \
|
||||
--enable-muxer=pcm_u32be \
|
||||
--enable-muxer=pcm_u32le \
|
||||
--enable-muxer=pcm_u8 \
|
||||
--enable-muxer=voc \
|
||||
--enable-muxer=wav \
|
||||
--disable-filters \
|
||||
--enable-filter=format \
|
||||
--enable-filter=noformat \
|
||||
--enable-filter=null \
|
||||
--enable-filter=nullsink \
|
||||
--enable-filter=nullsrc \
|
||||
--enable-filter=slicify
|
||||
LDFLAGS="${X86_64LDFLAGS} -L${X86_64PATH}/lib" CFLAGS="${X86_64FLAGS} -I${X86_64PATH}/include -mdynamic-no-pic" CC="${X86_64CC}" ./configure --prefix="${X86_64PATH}" --enable-cross-compile --target-os=darwin --arch=x86_64 ${STANDARD}
|
||||
|
||||
echo "Compiling FFmpeg"
|
||||
cd ../${FFMPEGNAME}-ppc
|
||||
|
@ -10,7 +10,11 @@
|
||||
|
||||
@class MGMPreferencesPane;
|
||||
|
||||
@interface MGMPreferences : NSObject <NSWindowDelegate, NSToolbarDelegate> {
|
||||
@interface MGMPreferences : NSObject
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
|
||||
<NSWindowDelegate, NSToolbarDelegate>
|
||||
#endif
|
||||
{
|
||||
@private
|
||||
NSWindow *preferencesWindow;
|
||||
NSMutableArray *preferencesPanes;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,8 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array/>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
@ -16,13 +18,23 @@
|
||||
<string>0.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
<array/>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.1</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSServices</key>
|
||||
<array/>
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
<array/>
|
||||
<key>UTImportedTypeDeclarations</key>
|
||||
<array/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
@ -10,8 +10,6 @@
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.MrGeckosMedia.${PRODUCT_NAME:rfc1034Identifier}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright (c) 2010 Mr. Gecko's Media (James Coleman). All rights reserved. http://mrgeckosmedia.com/</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@ -24,6 +22,8 @@
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
<div class="inContent">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +11,6 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,7 +1,8 @@
|
||||
<div id="inContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +12,7 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,7 +1,7 @@
|
||||
<div class="inNextContent">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +11,6 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,7 +1,8 @@
|
||||
<div id="inNextContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +12,7 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,4 +1,4 @@
|
||||
<div class="outContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +8,9 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,4 +1,5 @@
|
||||
<div id="outContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +9,10 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,4 +1,4 @@
|
||||
<div class="outNextContent">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +8,9 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,4 +1,5 @@
|
||||
<div id="outNextContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +9,10 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,6 +1,11 @@
|
||||
<html>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<style type="text/css">
|
||||
body {
|
||||
%FONTSTYLE%
|
||||
}
|
||||
.ttl {
|
||||
background: url("%THEME%/images/ttl.png") no-repeat top left;
|
||||
width:21px;
|
||||
@ -103,11 +108,25 @@
|
||||
height:14px;
|
||||
font-size:0pt;
|
||||
}
|
||||
td.pname {
|
||||
.time {
|
||||
font-size:9pt;
|
||||
color:#999999;
|
||||
text-align:center;
|
||||
}
|
||||
.hideIcons .pname {
|
||||
display: none;
|
||||
}
|
||||
.hideIcon {
|
||||
display: none;
|
||||
}
|
||||
.hideIcons.outgoing .hideIcon {
|
||||
display: block;
|
||||
float: right;
|
||||
}
|
||||
.hideIcons.incoming .hideIcon {
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#inContext {
|
||||
display: none;
|
||||
@ -126,7 +145,24 @@ td.pname {
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function newMessage(text, photourl, time, id, name, number, lastdate, type) {
|
||||
function findInsert(node) {
|
||||
var result = null;
|
||||
if (node.getAttribute("id")=="insert")
|
||||
return node;
|
||||
for (var i=0; i<node.childNodes.length; i++) {
|
||||
if (node.childNodes[i].nodeType==1) {
|
||||
result = findInsert(node.childNodes[i]);
|
||||
if (result!=null)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
var shouldScroll = true;
|
||||
function newMessage(text, photourl, time, id, name, number, lastdate, type, classes) {
|
||||
shouldScroll = nearBottom();
|
||||
var content = document.getElementById("content");
|
||||
var insert = findInsert(content);
|
||||
var template = null;
|
||||
if (type==1) {
|
||||
template = document.getElementById("outContext").cloneNode(true);
|
||||
@ -141,17 +177,28 @@ function newMessage(text, photourl, time, id, name, number, lastdate, type) {
|
||||
template = document.getElementById("inNextContext").cloneNode(true);
|
||||
template.setAttribute("class", "inNextContent");
|
||||
}
|
||||
template.removeAttribute("id");
|
||||
template.innerHTML = template.innerHTML.replace(/%TEXT%/g, text);
|
||||
template.innerHTML = template.innerHTML.replace(/%PHOTO%/g, photourl);
|
||||
template.innerHTML = template.innerHTML.replace(/%TIME%/g, time);
|
||||
template.innerHTML = template.innerHTML.replace(/%MESSAGEID%/g, id);
|
||||
template.innerHTML = template.innerHTML.replace(/%NAME%/g, name);
|
||||
template.innerHTML = template.innerHTML.replace(/%NUMBER%/g, number);
|
||||
document.getElementById("content").appendChild(template);
|
||||
template.innerHTML = template.innerHTML.replace(/%MESSAGECLASSES%/g, classes);
|
||||
template = template.childNodes[1];
|
||||
if ((type==2 || type==4) && insert!=null) {
|
||||
insert.parentNode.replaceChild(template, insert);
|
||||
} else {
|
||||
if (insert!=null)
|
||||
insert.parentNode.removeChild(insert);
|
||||
content.appendChild(template);
|
||||
}
|
||||
}
|
||||
function nearBottom() {
|
||||
return (document.body.scrollTop >= (document.body.offsetHeight - (window.innerHeight * 1.2)));
|
||||
}
|
||||
function scrollToBottom() {
|
||||
window.scrollTo(0, document.body.scrollHeight);
|
||||
if (shouldScroll)
|
||||
document.body.scrollTop = document.body.offsetHeight;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
1009
Resources/VoiceMac/VoiceVerify.xib
Normal file
1009
Resources/VoiceMac/VoiceVerify.xib
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
<div class="inContent">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +11,6 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,7 +1,8 @@
|
||||
<div id="inContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +12,7 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,7 +1,7 @@
|
||||
<div class="inNextContent">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +11,6 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,7 +1,8 @@
|
||||
<div id="inNextContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
<td align="left"><table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr><td class="ttl"> </td><td class="ttm"> </td><td class="ttr"> </td></tr>
|
||||
<tr><td class="tml"> </td>
|
||||
@ -11,4 +12,7 @@
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,4 +1,4 @@
|
||||
<div class="outContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +8,9 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,4 +1,5 @@
|
||||
<div id="outContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +9,10 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,4 +1,4 @@
|
||||
<div class="outNextContent">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +8,9 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
@ -1,4 +1,5 @@
|
||||
<div id="outNextContext">
|
||||
<div class="%MESSAGECLASSES%">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td align="right"><table border="0" cellpadding="0" cellspacing="0">
|
||||
@ -8,7 +9,10 @@
|
||||
<td class="umr"> </td></tr>
|
||||
<tr><td class="ubl"> </td><td class="ubm"> </td><td class="ubr"> </td></tr>
|
||||
</table></td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br />%TIME%</td>
|
||||
<td valign="bottom" class="pname" width="50"><img src="%PHOTO%" width="45" height="45" /><br /><span class="time">%TIME%</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="time hideIcon">%TIME%</div>
|
||||
<div id="insert"></div>
|
||||
</div>
|
||||
</div>
|
@ -1,6 +1,11 @@
|
||||
<html>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<style type="text/css">
|
||||
body {
|
||||
%FONTSTYLE%
|
||||
}
|
||||
.ttl {
|
||||
background: url("%THEME%/images/ttl.png") no-repeat top left;
|
||||
width:21px;
|
||||
@ -103,11 +108,25 @@
|
||||
height:14px;
|
||||
font-size:0pt;
|
||||
}
|
||||
td.pname {
|
||||
.time {
|
||||
font-size:9pt;
|
||||
color:#999999;
|
||||
text-align:center;
|
||||
}
|
||||
.hideIcons .pname {
|
||||
display: none;
|
||||
}
|
||||
.hideIcon {
|
||||
display: none;
|
||||
}
|
||||
.hideIcons.outgoing .hideIcon {
|
||||
display: block;
|
||||
float: right;
|
||||
}
|
||||
.hideIcons.incoming .hideIcon {
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#inContext {
|
||||
display: none;
|
||||
@ -126,7 +145,24 @@ td.pname {
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function newMessage(text, photourl, time, id, name, number, lastdate, type) {
|
||||
function findInsert(node) {
|
||||
var result = null;
|
||||
if (node.getAttribute("id")=="insert")
|
||||
return node;
|
||||
for (var i=0; i<node.childNodes.length; i++) {
|
||||
if (node.childNodes[i].nodeType==1) {
|
||||
result = findInsert(node.childNodes[i]);
|
||||
if (result!=null)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
var shouldScroll = true;
|
||||
function newMessage(text, photourl, time, id, name, number, lastdate, type, classes) {
|
||||
shouldScroll = nearBottom();
|
||||
var content = document.getElementById("content");
|
||||
var insert = findInsert(content);
|
||||
var template = null;
|
||||
if (type==1) {
|
||||
template = document.getElementById("outContext").cloneNode(true);
|
||||
@ -141,17 +177,28 @@ function newMessage(text, photourl, time, id, name, number, lastdate, type) {
|
||||
template = document.getElementById("inNextContext").cloneNode(true);
|
||||
template.setAttribute("class", "inNextContent");
|
||||
}
|
||||
template.removeAttribute("id");
|
||||
template.innerHTML = template.innerHTML.replace(/%TEXT%/g, text);
|
||||
template.innerHTML = template.innerHTML.replace(/%PHOTO%/g, photourl);
|
||||
template.innerHTML = template.innerHTML.replace(/%TIME%/g, time);
|
||||
template.innerHTML = template.innerHTML.replace(/%MESSAGEID%/g, id);
|
||||
template.innerHTML = template.innerHTML.replace(/%NAME%/g, name);
|
||||
template.innerHTML = template.innerHTML.replace(/%NUMBER%/g, number);
|
||||
document.getElementById("content").appendChild(template);
|
||||
template.innerHTML = template.innerHTML.replace(/%MESSAGECLASSES%/g, classes);
|
||||
template = template.childNodes[1];
|
||||
if ((type==2 || type==4) && insert!=null) {
|
||||
insert.parentNode.replaceChild(template, insert);
|
||||
} else {
|
||||
if (insert!=null)
|
||||
insert.parentNode.removeChild(insert);
|
||||
content.appendChild(template);
|
||||
}
|
||||
}
|
||||
function nearBottom() {
|
||||
return (document.body.scrollTop >= (document.body.offsetHeight - (window.innerHeight * 1.2)));
|
||||
}
|
||||
function scrollToBottom() {
|
||||
window.scrollTo(0, document.body.scrollHeight);
|
||||
if (shouldScroll)
|
||||
document.body.scrollTop = document.body.offsetHeight;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
67
SIP/install
67
SIP/install
@ -21,13 +21,12 @@ X86_64HOST="x86_64-apple-darwin9"
|
||||
X86_64PATH="${PWD}/opt-x86_64"
|
||||
X86_64LDFLAGS="-arch x86_64"
|
||||
|
||||
FINALPATH="${PWD}/opt"
|
||||
|
||||
if [ "$1" = "clean" ]; then
|
||||
echo "Cleaning PJProject"
|
||||
rm -fR pjproject-i386 pjproject-x86_64 pjproject-ppc pjproject-ios pjproject-simulator
|
||||
fi
|
||||
if [ "$1" = "ios" ]; then
|
||||
FINALPATH="${PWD}/opt-ios"
|
||||
IOSCFLAGS="-miphoneos-version-min=3.1"
|
||||
IOS6PATH="${PWD}/opt-ios6"
|
||||
IOS7PATH="${PWD}/opt-ios7"
|
||||
@ -38,6 +37,9 @@ if [ "$1" = "ios" ]; then
|
||||
cp -R ${PJPROJECTNAME} ${PJPROJECTNAME}-ios6
|
||||
echo "#define PJ_CONFIG_IPHONE 1" > ${PJPROJECTNAME}-ios6/pjlib/include/pj/config_site.h
|
||||
echo "#include <pj/config_site_sample.h>" >> ${PJPROJECTNAME}-ios6/pjlib/include/pj/config_site.h
|
||||
echo "#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0" >> ${PJPROJECTNAME}-ios6/pjlib/include/pj/config_site.h
|
||||
echo "#define PJMEDIA_AUDIO_DEV_HAS_COREAUDIO 1" >> ${PJPROJECTNAME}-ios6/pjlib/include/pj/config_site.h
|
||||
echo "#define PJMEDIA_HAS_G722_CODEC 2" >> ${PJPROJECTNAME}-ios6/pjlib/include/pj/config_site.h
|
||||
|
||||
OLDDIR="${PWD}"
|
||||
cd ${PJPROJECTNAME}-ios6
|
||||
@ -45,7 +47,6 @@ if [ "$1" = "ios" ]; then
|
||||
cd "${OLDDIR}"
|
||||
cp -R ${PJPROJECTNAME}-ios6 ${PJPROJECTNAME}-ios7
|
||||
cp -R ${PJPROJECTNAME}-ios6 ${PJPROJECTNAME}-simulator
|
||||
|
||||
echo "Configuring PJProject"
|
||||
cd ${PJPROJECTNAME}-ios6
|
||||
CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6" CFLAGS="${IOSCFLAGS}" ./configure-iphone --prefix="${IOS6PATH}"
|
||||
@ -78,7 +79,7 @@ if [ "$1" = "ios" ]; then
|
||||
|
||||
echo "Making PJProject Universal"
|
||||
mkdir -p "${FINALPATH}/lib/pkgconfig"
|
||||
cp -R "${PPCPATH}/include" "${FINALPATH}/include"
|
||||
cp -R "${IOS6PATH}/include" "${FINALPATH}"
|
||||
lipo -create "${IOS6PATH}/lib/libg7221codec-arm-apple-darwin9.a" "${IOS7PATH}/lib/libg7221codec-arm-apple-darwin9.a" "${SIMULATORPATH}/lib/libg7221codec-arm-apple-darwin9.a" -output "${FINALPATH}/lib/libg7221codec-ios.a"
|
||||
lipo -create "${IOS6PATH}/lib/libgsmcodec-arm-apple-darwin9.a" "${IOS7PATH}/lib/libgsmcodec-arm-apple-darwin9.a" "${SIMULATORPATH}/lib/libgsmcodec-arm-apple-darwin9.a" -output "${FINALPATH}/lib/libgsmcodec-ios.a"
|
||||
lipo -create "${IOS6PATH}/lib/libilbccodec-arm-apple-darwin9.a" "${IOS7PATH}/lib/libilbccodec-arm-apple-darwin9.a" "${SIMULATORPATH}/lib/libilbccodec-arm-apple-darwin9.a" -output "${FINALPATH}/lib/libilbccodec-ios.a"
|
||||
@ -97,7 +98,63 @@ if [ "$1" = "ios" ]; then
|
||||
lipo -create "${IOS6PATH}/lib/libspeex-arm-apple-darwin9.a" "${IOS7PATH}/lib/libspeex-arm-apple-darwin9.a" "${SIMULATORPATH}/lib/libspeex-arm-apple-darwin9.a" -output "${FINALPATH}/lib/libspeex-ios.a"
|
||||
lipo -create "${IOS6PATH}/lib/libsrtp-arm-apple-darwin9.a" "${IOS7PATH}/lib/libsrtp-arm-apple-darwin9.a" "${SIMULATORPATH}/lib/libsrtp-arm-apple-darwin9.a" -output "${FINALPATH}/lib/libsrtp-ios.a"
|
||||
fi
|
||||
if [ "$1" = "simulator" ]; then
|
||||
FINALPATH="${PWD}/opt-ios"
|
||||
IOSCFLAGS="-miphoneos-version-min=3.1"
|
||||
SIMULATORPATH="${PWD}/opt-simulator"
|
||||
|
||||
echo "Copying PJProject"
|
||||
PJPROJECTNAME="pjproject"
|
||||
cp -R ${PJPROJECTNAME} ${PJPROJECTNAME}-simulator
|
||||
echo "#define PJ_CONFIG_IPHONE 1" > ${PJPROJECTNAME}-simulator/pjlib/include/pj/config_site.h
|
||||
echo "#include <pj/config_site_sample.h>" >> ${PJPROJECTNAME}-simulator/pjlib/include/pj/config_site.h
|
||||
echo "#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0" >> ${PJPROJECTNAME}-simulator/pjlib/include/pj/config_site.h
|
||||
echo "#define PJMEDIA_AUDIO_DEV_HAS_COREAUDIO 1" >> ${PJPROJECTNAME}-simulator/pjlib/include/pj/config_site.h
|
||||
echo "#define PJMEDIA_HAS_G722_CODEC 2" >> ${PJPROJECTNAME}-simulator/pjlib/include/pj/config_site.h
|
||||
|
||||
OLDDIR="${PWD}"
|
||||
cd ${PJPROJECTNAME}-simulator
|
||||
patch -p0 < "${OLDDIR}/mips_test.patch"
|
||||
cd "${OLDDIR}"
|
||||
echo "Configuring PJProject"
|
||||
cd ${PJPROJECTNAME}-simulator
|
||||
DEVPATH="/Developer/Platforms/iPhoneSimulator.platform/Developer" CC="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2" CFLAGS="${IOSCFLAGS}" ./configure-iphone --prefix="${SIMULATORPATH}"
|
||||
cd ../
|
||||
|
||||
echo "Compiling PJProject"
|
||||
cd ${PJPROJECTNAME}-simulator
|
||||
make dep
|
||||
make
|
||||
cd ../
|
||||
|
||||
echo "Installing PJProject"
|
||||
cd ${PJPROJECTNAME}-simulator
|
||||
make install
|
||||
cd ../
|
||||
|
||||
echo "Making PJProject Universal"
|
||||
mkdir -p "${FINALPATH}/lib/pkgconfig"
|
||||
cp -R "${SIMULATORPATH}/include" "${FINALPATH}"
|
||||
mv "${SIMULATORPATH}/lib/libg7221codec-arm-apple-darwin9.a" "${FINALPATH}/lib/libg7221codec-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libgsmcodec-arm-apple-darwin9.a" "${FINALPATH}/lib/libgsmcodec-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libilbccodec-arm-apple-darwin9.a" "${FINALPATH}/lib/libilbccodec-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libmilenage-arm-apple-darwin9.a" "${FINALPATH}/lib/libmilenage-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpj-arm-apple-darwin9.a" "${FINALPATH}/lib/libpj-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjlib-util-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjlib-util-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjmedia-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjmedia-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjmedia-audiodev-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjmedia-audiodev-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjmedia-codec-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjmedia-codec-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjnath-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjnath-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjsip-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjsip-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjsip-simple-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjsip-simple-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjsip-ua-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjsip-ua-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libpjsua-arm-apple-darwin9.a" "${FINALPATH}/lib/libpjsua-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libresample-arm-apple-darwin9.a" "${FINALPATH}/lib/libresample-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libspeex-arm-apple-darwin9.a" "${FINALPATH}/lib/libspeex-ios.a"
|
||||
mv "${SIMULATORPATH}/lib/libsrtp-arm-apple-darwin9.a" "${FINALPATH}/lib/libsrtp-ios.a"
|
||||
fi
|
||||
if [ "$1" = "" ]; then
|
||||
FINALPATH="${PWD}/opt"
|
||||
echo "Copying PJProject"
|
||||
PJPROJECTNAME="pjproject"
|
||||
cp -R ${PJPROJECTNAME} ${PJPROJECTNAME}-ppc
|
||||
@ -138,7 +195,7 @@ if [ "$1" = "" ]; then
|
||||
|
||||
echo "Making PJProject Universal"
|
||||
mkdir -p "${FINALPATH}/lib/pkgconfig"
|
||||
cp -R "${PPCPATH}/include" "${FINALPATH}/include"
|
||||
cp -R "${PPCPATH}/include" "${FINALPATH}"
|
||||
lipo -create "${PPCPATH}/lib/libg7221codec-powerpc-apple-darwin8.a" "${I386PATH}/lib/libg7221codec-i386-apple-darwin8.a" "${X86_64PATH}/lib/libg7221codec-x86_64-apple-darwin9.a" -output "${FINALPATH}/lib/libg7221codec.a"
|
||||
lipo -create "${PPCPATH}/lib/libgsmcodec-powerpc-apple-darwin8.a" "${I386PATH}/lib/libgsmcodec-i386-apple-darwin8.a" "${X86_64PATH}/lib/libgsmcodec-x86_64-apple-darwin9.a" -output "${FINALPATH}/lib/libgsmcodec.a"
|
||||
lipo -create "${PPCPATH}/lib/libilbccodec-powerpc-apple-darwin8.a" "${I386PATH}/lib/libilbccodec-i386-apple-darwin8.a" "${X86_64PATH}/lib/libilbccodec-x86_64-apple-darwin9.a" -output "${FINALPATH}/lib/libilbccodec.a"
|
||||
|
@ -3,7 +3,7 @@ To get the latest source to PJProject, run the command below.
|
||||
svn checkout http://svn.pjsip.org/repos/pjproject/trunk pjproject
|
||||
|
||||
To get the revision that I am using in VoiceMac and VoiceMob, run the command below.
|
||||
svn checkout -r 3436 http://svn.pjsip.org/repos/pjproject/trunk pjproject
|
||||
svn checkout -r 3466 http://svn.pjsip.org/repos/pjproject/trunk pjproject
|
||||
|
||||
Building.
|
||||
To build for VoiceMac, run the command below.
|
||||
|
Binary file not shown.
@ -64,11 +64,11 @@
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
2A033E2A13310AF300E9070B /* prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.pch; path = "Classes/Theme Tester/prefix.pch"; sourceTree = "<group>"; };
|
||||
2A19272512B7BD0F00B065ED /* blankicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blankicon.png; sourceTree = "<group>"; };
|
||||
2A6D4DF012470DC0009C4029 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "Classes/Theme Tester/main.m"; sourceTree = "<group>"; };
|
||||
2A6D4DF112470DC0009C4029 /* MGMThemeTesterController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMThemeTesterController.h; sourceTree = "<group>"; };
|
||||
2A6D4DF212470DC0009C4029 /* MGMThemeTesterController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMThemeTesterController.m; sourceTree = "<group>"; };
|
||||
2A6D4DF312470DC0009C4029 /* Theme Tester_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Theme Tester_Prefix.pch"; path = "Classes/Theme Tester/Theme Tester_Prefix.pch"; sourceTree = "<group>"; };
|
||||
2A6D4DF912470E0A009C4029 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
2A6D4DFA12470E0A009C4029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
2A6D4DFB12470E0A009C4029 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
@ -138,7 +138,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2A6D4DF012470DC0009C4029 /* main.m */,
|
||||
2A6D4DF312470DC0009C4029 /* Theme Tester_Prefix.pch */,
|
||||
2A033E2A13310AF300E9070B /* prefix.pch */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
@ -317,7 +317,7 @@
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Classes/Theme Tester/Theme Tester_Prefix.pch";
|
||||
GCC_PREFIX_HEADER = "Classes/Theme Tester/prefix.pch";
|
||||
INFOPLIST_FILE = "Resources/Theme Tester/Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = "Theme Tester";
|
||||
@ -335,8 +335,8 @@
|
||||
);
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Theme_Tester_Prefix.pch;
|
||||
INFOPLIST_FILE = "Theme_Tester-Info.plist";
|
||||
GCC_PREFIX_HEADER = "Classes/Theme Tester/prefix.pch";
|
||||
INFOPLIST_FILE = "Resources/Theme Tester/Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = "Theme Tester";
|
||||
};
|
||||
@ -345,14 +345,9 @@
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
@ -360,21 +355,15 @@
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
@ -382,7 +371,6 @@
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
@ -91,8 +91,6 @@
|
||||
2A771344124C4F9A00D68042 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A771343124C4F9A00D68042 /* AVFoundation.framework */; };
|
||||
2A7713BD124C6A4900D68042 /* MGMSound.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A77133B124C4CE200D68042 /* MGMSound.m */; };
|
||||
2A7713BF124C6A5B00D68042 /* MGMSound.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A77133A124C4CE200D68042 /* MGMSound.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
2AB13633130AB39C00F2B0E8 /* libxml2.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AB13632130AB39C00F2B0E8 /* libxml2.2.dylib */; };
|
||||
2AB13634130AB39C00F2B0E8 /* libxml2.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AB13632130AB39C00F2B0E8 /* libxml2.2.dylib */; };
|
||||
2AE6EE621249DA790006B5AC /* MGMAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1171A61245676A00D119B5 /* MGMAddressBook.m */; };
|
||||
2AE6EE631249DA790006B5AC /* MGMContacts.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1171A81245676A00D119B5 /* MGMContacts.m */; };
|
||||
2AE6EE641249DA790006B5AC /* MGMContactsProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1171AA1245676A00D119B5 /* MGMContactsProtocol.m */; };
|
||||
@ -108,10 +106,9 @@
|
||||
2AE6EE701249DA870006B5AC /* libMGMUsers.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE6EE0F1249D70F0006B5AC /* libMGMUsers.a */; };
|
||||
2AE6EE761249DB2F0006B5AC /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE6EE751249DB2F0006B5AC /* CoreGraphics.framework */; };
|
||||
2AE6EE7A1249DB2F0006B5AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE6EE791249DB2F0006B5AC /* UIKit.framework */; };
|
||||
2AE8D44B1309EFF500D0104B /* libcrypto.0.9.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE8D44A1309EFF500D0104B /* libcrypto.0.9.7.dylib */; };
|
||||
2AE8D44C1309EFF500D0104B /* libcrypto.0.9.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE8D44A1309EFF500D0104B /* libcrypto.0.9.7.dylib */; };
|
||||
2AE8D44E1309F00200D0104B /* libssl.0.9.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE8D44D1309F00200D0104B /* libssl.0.9.7.dylib */; };
|
||||
2AE8D44F1309F00200D0104B /* libssl.0.9.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AE8D44D1309F00200D0104B /* libssl.0.9.7.dylib */; };
|
||||
2AF3A2721327B2B1003D0507 /* libssl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF3A2711327B2B1003D0507 /* libssl.dylib */; };
|
||||
2AF3A2741327B2BD003D0507 /* libcrypto.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF3A2731327B2BD003D0507 /* libcrypto.dylib */; };
|
||||
2AF3A2761327B2CB003D0507 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AF3A2751327B2CB003D0507 /* libxml2.dylib */; };
|
||||
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@ -179,7 +176,6 @@
|
||||
2A1171BC1245676A00D119B5 /* MGMSIPURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMSIPURL.h; sourceTree = "<group>"; };
|
||||
2A1171BD1245676A00D119B5 /* MGMSIPURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMSIPURL.m; sourceTree = "<group>"; };
|
||||
2A1171BE1245676A00D119B5 /* VoiceBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VoiceBase.h; sourceTree = "<group>"; };
|
||||
2A1171BF1245676A00D119B5 /* VoiceBase_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VoiceBase_Prefix.pch; path = Classes/VoiceBase/VoiceBase_Prefix.pch; sourceTree = "<group>"; };
|
||||
2A1171DC1245678600D119B5 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
2A1171DD1245678600D119B5 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
2A1172981245684600D119B5 /* MGMUsers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MGMUsers.framework; path = Frameworks/MGMUsers.framework; sourceTree = "<group>"; };
|
||||
@ -206,20 +202,21 @@
|
||||
2A487CAE124BE0C400E8EE4E /* MGMXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMXML.h; sourceTree = "<group>"; };
|
||||
2A50699A1315726C003CACD5 /* MGMDelegateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMDelegateInfo.h; sourceTree = "<group>"; };
|
||||
2A50699B1315726D003CACD5 /* MGMDelegateInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMDelegateInfo.m; sourceTree = "<group>"; };
|
||||
2A5B70CE13310E9100F89B56 /* prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.pch; path = Classes/VoiceBase/prefix.pch; sourceTree = "<group>"; };
|
||||
2A5B70CF13310E9100F89B56 /* touch_prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = touch_prefix.pch; path = Classes/VoiceBase/touch_prefix.pch; sourceTree = "<group>"; };
|
||||
2A77133A124C4CE200D68042 /* MGMSound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMSound.h; sourceTree = "<group>"; };
|
||||
2A77133B124C4CE200D68042 /* MGMSound.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMSound.m; sourceTree = "<group>"; };
|
||||
2A77133F124C4D2800D68042 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
2A771343124C4F9A00D68042 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
2AB13632130AB39C00F2B0E8 /* libxml2.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.2.dylib; path = usr/lib/libxml2.2.dylib; sourceTree = SDKROOT; };
|
||||
2AE6EE0F1249D70F0006B5AC /* libMGMUsers.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMGMUsers.a; path = Libraries/lib/libMGMUsers.a; sourceTree = "<group>"; };
|
||||
2AE6EE531249DA0B0006B5AC /* libVoiceBase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVoiceBase.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
2AE6EE731249DB2F0006B5AC /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
|
||||
2AE6EE751249DB2F0006B5AC /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
2AE6EE771249DB2F0006B5AC /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
2AE6EE791249DB2F0006B5AC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
2AE6EF191249DBA70006B5AC /* VoiceBaseTouch_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VoiceBaseTouch_Prefix.pch; path = Classes/VoiceBase/VoiceBaseTouch_Prefix.pch; sourceTree = "<group>"; };
|
||||
2AE8D44A1309EFF500D0104B /* libcrypto.0.9.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.0.9.7.dylib; path = usr/lib/libcrypto.0.9.7.dylib; sourceTree = SDKROOT; };
|
||||
2AE8D44D1309F00200D0104B /* libssl.0.9.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl.0.9.7.dylib; path = usr/lib/libssl.0.9.7.dylib; sourceTree = SDKROOT; };
|
||||
2AF3A2711327B2B1003D0507 /* libssl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libssl.dylib; path = usr/lib/libssl.dylib; sourceTree = SDKROOT; };
|
||||
2AF3A2731327B2BD003D0507 /* libcrypto.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcrypto.dylib; path = usr/lib/libcrypto.dylib; sourceTree = SDKROOT; };
|
||||
2AF3A2751327B2CB003D0507 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; };
|
||||
8DC2EF5B0486A6940098B216 /* VoiceBase.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VoiceBase.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
/* End PBXFileReference section */
|
||||
@ -236,9 +233,6 @@
|
||||
2A771344124C4F9A00D68042 /* AVFoundation.framework in Frameworks */,
|
||||
2A1E9723124D174200D3BEAE /* CoreAudio.framework in Frameworks */,
|
||||
2A1E9754124D187500D3BEAE /* SystemConfiguration.framework in Frameworks */,
|
||||
2AE8D44C1309EFF500D0104B /* libcrypto.0.9.7.dylib in Frameworks */,
|
||||
2AE8D44F1309F00200D0104B /* libssl.0.9.7.dylib in Frameworks */,
|
||||
2AB13634130AB39C00F2B0E8 /* libxml2.2.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -246,6 +240,9 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
2AF3A2721327B2B1003D0507 /* libssl.dylib in Frameworks */,
|
||||
2AF3A2741327B2BD003D0507 /* libcrypto.dylib in Frameworks */,
|
||||
2AF3A2761327B2CB003D0507 /* libxml2.dylib in Frameworks */,
|
||||
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */,
|
||||
2A1172991245684600D119B5 /* MGMUsers.framework in Frameworks */,
|
||||
2A1172BB124569AC00D119B5 /* AddressBook.framework in Frameworks */,
|
||||
@ -253,9 +250,6 @@
|
||||
2A11730912456C4F00D119B5 /* AudioToolbox.framework in Frameworks */,
|
||||
2A11730D12456C5F00D119B5 /* AudioUnit.framework in Frameworks */,
|
||||
2A11731112456C6D00D119B5 /* SystemConfiguration.framework in Frameworks */,
|
||||
2AE8D44B1309EFF500D0104B /* libcrypto.0.9.7.dylib in Frameworks */,
|
||||
2AE8D44E1309F00200D0104B /* libssl.0.9.7.dylib in Frameworks */,
|
||||
2AB13633130AB39C00F2B0E8 /* libxml2.2.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -287,9 +281,9 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2AE6EC281249C2C70006B5AC /* Linked Libraries Touch */,
|
||||
2AF3A2AD1327B314003D0507 /* Linled Libraries */,
|
||||
2AE6EC2A1249C2D50006B5AC /* Linked Frameworks Touch */,
|
||||
2AE6EC2B1249C2E20006B5AC /* Other Frameworks Touch */,
|
||||
2A1172F612456C0600D119B5 /* Linked Libraries */,
|
||||
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */,
|
||||
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
@ -384,16 +378,6 @@
|
||||
path = Resources/VoiceBase;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2A1172F612456C0600D119B5 /* Linked Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2AE8D44D1309F00200D0104B /* libssl.0.9.7.dylib */,
|
||||
2AE8D44A1309EFF500D0104B /* libcrypto.0.9.7.dylib */,
|
||||
2AB13632130AB39C00F2B0E8 /* libxml2.2.dylib */,
|
||||
);
|
||||
name = "Linked Libraries";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2A487C92124BE0AB00E8EE4E /* XML */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -445,11 +429,21 @@
|
||||
name = "Other Frameworks Touch";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
2AF3A2AD1327B314003D0507 /* Linled Libraries */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2AF3A2711327B2B1003D0507 /* libssl.dylib */,
|
||||
2AF3A2731327B2BD003D0507 /* libcrypto.dylib */,
|
||||
2AF3A2751327B2CB003D0507 /* libxml2.dylib */,
|
||||
);
|
||||
name = "Linled Libraries";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
32C88DFF0371C24200C91783 /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2AE6EF191249DBA70006B5AC /* VoiceBaseTouch_Prefix.pch */,
|
||||
2A1171BF1245676A00D119B5 /* VoiceBase_Prefix.pch */,
|
||||
2A5B70CE13310E9100F89B56 /* prefix.pch */,
|
||||
2A5B70CF13310E9100F89B56 /* touch_prefix.pch */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
@ -646,12 +640,12 @@
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBase_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/prefix.pch;
|
||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = Resources/VoiceBase/Info.plist;
|
||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
PRODUCT_NAME = VoiceBase;
|
||||
WRAPPER_EXTENSION = framework;
|
||||
};
|
||||
@ -672,12 +666,12 @@
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBase_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/prefix.pch;
|
||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||
INFOPLIST_FILE = Resources/VoiceBase/Info.plist;
|
||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
OTHER_LDFLAGS = "";
|
||||
OTHER_LDFLAGS = "$(inherited)";
|
||||
PRODUCT_NAME = VoiceBase;
|
||||
WRAPPER_EXTENSION = framework;
|
||||
};
|
||||
@ -686,14 +680,9 @@
|
||||
1DEB91B208733DA50010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
@ -701,52 +690,39 @@
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB91B308733DA50010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
2A1172E612456A6700D119B5 /* Debug SIP */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
/usr/include/libxml2,
|
||||
"\"$(SRCROOT)/SIP/opt/include\"",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/SIP/opt/lib\"";
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
@ -755,9 +731,9 @@
|
||||
"-DNDEBUG",
|
||||
"-DMGMSIPENABLED=1",
|
||||
);
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = "Debug SIP";
|
||||
};
|
||||
@ -778,12 +754,19 @@
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBase_Prefix.pch;
|
||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/prefix.pch;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/SIP/opt/include\"",
|
||||
);
|
||||
INFOPLIST_FILE = Resources/VoiceBase/Info.plist;
|
||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/SIP/opt/lib\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-lg7221codec",
|
||||
"-lgsmcodec",
|
||||
"-lilbccodec",
|
||||
@ -811,20 +794,12 @@
|
||||
2A1172E812456A6C00D119B5 /* Release SIP */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
/usr/include/libxml2,
|
||||
"\"$(SRCROOT)/SIP/opt/include\"",
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/SIP/opt/lib\"";
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
LIBRARY_SEARCH_PATHS = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
OTHER_CFLAGS = (
|
||||
@ -832,9 +807,9 @@
|
||||
"-DNDEBUG",
|
||||
"-DMGMSIPENABLED=1",
|
||||
);
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = "Release SIP";
|
||||
};
|
||||
@ -853,12 +828,19 @@
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBase_Prefix.pch;
|
||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/prefix.pch;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/SIP/opt/include\"",
|
||||
);
|
||||
INFOPLIST_FILE = Resources/VoiceBase/Info.plist;
|
||||
INSTALL_PATH = "@executable_path/../Frameworks";
|
||||
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/SIP/opt/lib\"",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-lg7221codec",
|
||||
"-lgsmcodec",
|
||||
"-lilbccodec",
|
||||
@ -891,7 +873,7 @@
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBaseTouch_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/touch_prefix.pch;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@ -904,12 +886,13 @@
|
||||
);
|
||||
OTHER_CFLAGS = "-fblocks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-all_load",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = VoiceBase;
|
||||
SDKROOT = iphoneos4.2;
|
||||
SDKROOT = iphoneos4.3;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
};
|
||||
name = Debug;
|
||||
@ -919,16 +902,18 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBaseTouch_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/touch_prefix.pch;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/Libraries/include\"",
|
||||
"\"$(SRCROOT)/SIP/opt-ios/include\"",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.1;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/Libraries/lib\"",
|
||||
"\"$(SRCROOT)/SIP/opt-ios/lib\"",
|
||||
);
|
||||
OTHER_CFLAGS = (
|
||||
"-fblocks",
|
||||
@ -937,6 +922,7 @@
|
||||
"-DMGMSIPENABLED=1",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-lg7221codec-ios",
|
||||
"-lgsmcodec-ios",
|
||||
"-lilbccodec-ios",
|
||||
@ -954,18 +940,12 @@
|
||||
"-lresample-ios",
|
||||
"-lspeex-ios",
|
||||
"-lsrtp-ios",
|
||||
"-lz",
|
||||
"-lavcodec",
|
||||
"-lavdevice",
|
||||
"-lavformat",
|
||||
"-lavutil",
|
||||
"-lswscale",
|
||||
"-ObjC",
|
||||
"-all_load",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = VoiceBase;
|
||||
SDKROOT = iphoneos4.2;
|
||||
SDKROOT = iphoneos4.3;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
};
|
||||
name = "Debug SIP";
|
||||
@ -978,7 +958,7 @@
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBaseTouch_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/touch_prefix.pch;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@ -991,12 +971,13 @@
|
||||
);
|
||||
OTHER_CFLAGS = "-fblocks";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
"-all_load",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
PRODUCT_NAME = VoiceBase;
|
||||
SDKROOT = iphoneos4.2;
|
||||
SDKROOT = iphoneos4.3;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
ZERO_LINK = NO;
|
||||
};
|
||||
@ -1007,16 +988,18 @@
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/VoiceBaseTouch_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceBase/touch_prefix.pch;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/Libraries/include\"",
|
||||
"\"$(SRCROOT)/SIP/opt-ios/include\"",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.1;
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/Libraries/lib\"",
|
||||
"\"$(SRCROOT)/SIP/opt-ios/lib\"",
|
||||
);
|
||||
OTHER_CFLAGS = (
|
||||
"-fblocks",
|
||||
@ -1025,6 +1008,7 @@
|
||||
"-DMGMSIPENABLED=1",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-lg7221codec-ios",
|
||||
"-lgsmcodec-ios",
|
||||
"-lilbccodec-ios",
|
||||
@ -1042,12 +1026,6 @@
|
||||
"-lresample-ios",
|
||||
"-lspeex-ios",
|
||||
"-lsrtp-ios",
|
||||
"-lz",
|
||||
"-lavcodec",
|
||||
"-lavdevice",
|
||||
"-lavformat",
|
||||
"-lavutil",
|
||||
"-lswscale",
|
||||
"-ObjC",
|
||||
"-all_load",
|
||||
);
|
||||
@ -1055,7 +1033,7 @@
|
||||
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/VoiceBase;
|
||||
PRODUCT_NAME = VoiceBase;
|
||||
PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/VoiceBase;
|
||||
SDKROOT = iphoneos4.2;
|
||||
SDKROOT = iphoneos4.3;
|
||||
VALID_ARCHS = "i386 armv6 armv7";
|
||||
};
|
||||
name = "Release SIP";
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:VoiceBase.xcodeproj">
|
||||
</FileRef>
|
||||
|
@ -130,6 +130,8 @@
|
||||
2A11770412458C8A00D119B5 /* blankicon.png in Resources */ = {isa = PBXBuildFile; fileRef = 2A11770312458C8A00D119B5 /* blankicon.png */; };
|
||||
2A1E9986124D69F300D3BEAE /* NumberOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A1E9985124D69F300D3BEAE /* NumberOptions.xib */; };
|
||||
2A91A3F61247D6B900013B43 /* AccountsPane.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2A91A3F81247D6B900013B43 /* AccountsPane.xib */; };
|
||||
2AF1EF461332D94100615DA3 /* VoiceVerify.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2AF1EF451332D94100615DA3 /* VoiceVerify.xib */; };
|
||||
2AF1EF4A1332DAB900615DA3 /* MGMVoiceVerify.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AF1EF491332DAB900615DA3 /* MGMVoiceVerify.m */; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@ -253,7 +255,6 @@
|
||||
2A11737E12456E4300D119B5 /* MGMTranslucentTabView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMTranslucentTabView.m; sourceTree = "<group>"; };
|
||||
2A11737F12456E4300D119B5 /* MGMViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMViewCell.h; sourceTree = "<group>"; };
|
||||
2A11738012456E4300D119B5 /* MGMViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMViewCell.m; sourceTree = "<group>"; };
|
||||
2A11738112456E4300D119B5 /* VoiceMac_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VoiceMac_Prefix.pch; path = Classes/VoiceMac/VoiceMac_Prefix.pch; sourceTree = "<group>"; };
|
||||
2A1173AF12456F2400D119B5 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/AccountSetup.xib; sourceTree = "<group>"; };
|
||||
2A1173B212456F2400D119B5 /* badge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = badge.png; sourceTree = "<group>"; };
|
||||
2A1173B312456F2400D119B5 /* badgel.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = badgel.png; sourceTree = "<group>"; };
|
||||
@ -323,7 +324,11 @@
|
||||
2A1176671245725B00D119B5 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
2A117684124573D600D119B5 /* VoiceMac.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = VoiceMac.icns; sourceTree = SOURCE_ROOT; };
|
||||
2A11770312458C8A00D119B5 /* blankicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = blankicon.png; sourceTree = "<group>"; };
|
||||
2A5B70D313310EA600F89B56 /* prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.pch; path = Classes/VoiceMac/prefix.pch; sourceTree = "<group>"; };
|
||||
2A91A3F71247D6B900013B43 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/AccountsPane.xib; sourceTree = "<group>"; };
|
||||
2AF1EF451332D94100615DA3 /* VoiceVerify.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VoiceVerify.xib; sourceTree = "<group>"; };
|
||||
2AF1EF481332DAB900615DA3 /* MGMVoiceVerify.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMVoiceVerify.h; sourceTree = "<group>"; };
|
||||
2AF1EF491332DAB900615DA3 /* MGMVoiceVerify.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMVoiceVerify.m; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* VoiceMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VoiceMac.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
@ -397,7 +402,7 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
2A11734412456E4300D119B5 /* main.m */,
|
||||
2A11738112456E4300D119B5 /* VoiceMac_Prefix.pch */,
|
||||
2A5B70D313310EA600F89B56 /* prefix.pch */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
@ -441,6 +446,8 @@
|
||||
2A11735012456E4300D119B5 /* MGMVMAddons.m */,
|
||||
2A11735112456E4300D119B5 /* MGMVoiceUser.h */,
|
||||
2A11735212456E4300D119B5 /* MGMVoiceUser.m */,
|
||||
2AF1EF481332DAB900615DA3 /* MGMVoiceVerify.h */,
|
||||
2AF1EF491332DAB900615DA3 /* MGMVoiceVerify.m */,
|
||||
2A11735312456E4300D119B5 /* Preferences */,
|
||||
2A0F564313228C3E00046E86 /* FFmpeg */,
|
||||
2A11735C12456E4300D119B5 /* SIP */,
|
||||
@ -566,6 +573,7 @@
|
||||
2A03CC851247D49300730F0C /* VoicemailView.xib */,
|
||||
2A03CC871247D49800730F0C /* VoiceUser.xib */,
|
||||
2A11746912456F2700D119B5 /* volume.png */,
|
||||
2AF1EF451332D94100615DA3 /* VoiceVerify.xib */,
|
||||
);
|
||||
name = Resources;
|
||||
path = Resources/VoiceMac;
|
||||
@ -782,6 +790,7 @@
|
||||
2A03CC8A1247D5B100730F0C /* License.txt in Resources */,
|
||||
2A0C3698127F40EF00334471 /* dsa_pub.pem in Resources */,
|
||||
2A0F564B132292EE00046E86 /* About.rtf in Resources */,
|
||||
2AF1EF461332D94100615DA3 /* VoiceVerify.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -840,6 +849,7 @@
|
||||
2A1173A012456E4300D119B5 /* MGMViewCell.m in Sources */,
|
||||
2A0F564813228C3E00046E86 /* MGMConverter.m in Sources */,
|
||||
2A0F564913228C3E00046E86 /* MGMFFmpeg.m in Sources */,
|
||||
2AF1EF4A1332DAB900615DA3 /* MGMVoiceVerify.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -1001,14 +1011,9 @@
|
||||
2A117648124570C300D119B5 /* Debug SIP */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@ -1037,8 +1042,7 @@
|
||||
"-lswscale",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = "Debug SIP";
|
||||
};
|
||||
@ -1056,7 +1060,7 @@
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/VoiceMac_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/prefix.pch;
|
||||
INFOPLIST_FILE = Resources/VoiceMac/Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = VoiceMac;
|
||||
@ -1066,13 +1070,8 @@
|
||||
2A11764A124570C800D119B5 /* Release SIP */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@ -1100,8 +1099,7 @@
|
||||
"-lswscale",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = "Release SIP";
|
||||
};
|
||||
@ -1116,7 +1114,7 @@
|
||||
);
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/VoiceMac_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/prefix.pch;
|
||||
INFOPLIST_FILE = Resources/VoiceMac/Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = VoiceMac;
|
||||
@ -1165,7 +1163,7 @@
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/VoiceMac_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/prefix.pch;
|
||||
INFOPLIST_FILE = Resources/VoiceMac/Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = VoiceMac;
|
||||
@ -1183,7 +1181,7 @@
|
||||
);
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/VoiceMac_Prefix.pch;
|
||||
GCC_PREFIX_HEADER = Classes/VoiceMac/prefix.pch;
|
||||
INFOPLIST_FILE = Resources/VoiceMac/Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = VoiceMac;
|
||||
@ -1193,60 +1191,34 @@
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = (
|
||||
"-lz",
|
||||
"-lavformat",
|
||||
"-lavcodec",
|
||||
"-lavdevice",
|
||||
"-lavutil",
|
||||
"-lswscale",
|
||||
);
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
x86_64,
|
||||
);
|
||||
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = 4.2;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = /usr/include/libxml2;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.4;
|
||||
"MACOSX_DEPLOYMENT_TARGET[arch=x86_64]" = 10.5;
|
||||
OTHER_LDFLAGS = (
|
||||
"-lz",
|
||||
"-lavformat",
|
||||
"-lavcodec",
|
||||
"-lavdevice",
|
||||
"-lavutil",
|
||||
"-lswscale",
|
||||
);
|
||||
OTHER_LDFLAGS = "";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.6;
|
||||
VALID_ARCHS = "ppc i386 x86_64";
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user