diff --git a/.gitmodules b/.gitmodules index 1e1d0f7c0..5807a21e6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,12 +25,14 @@ [submodule "submodules/externals/x264"] path = submodules/externals/x264 url = git://git.videolan.org/x264.git + ignore = dirty [submodule "submodules/msx264"] path = submodules/msx264 url = git://git.linphone.org/msx264.git [submodule "submodules/externals/libvpx"] path = submodules/externals/libvpx url = http://git.chromium.org/webm/libvpx.git + ignore = dirty [submodule "submodules/bzrtp"] path = submodules/bzrtp url = git://git.linphone.org/bzrtp.git @@ -55,15 +57,18 @@ [submodule "submodules/externals/opus"] path = submodules/externals/opus url = git://git.opus-codec.org/opus.git + ignore = dirty [submodule "submodules/externals/libxml2"] path = submodules/externals/libxml2 url = git://git.gnome.org/libxml2 + ignore = dirty [submodule "submodules/cunit"] path = submodules/cunit url = git://git.linphone.org/cunit.git [submodule "submodules/externals/openh264"] path = submodules/externals/openh264 url = https://github.com/cisco/openh264 + ignore = dirty [submodule "submodules/msopenh264"] path = submodules/msopenh264 url = git://git.linphone.org/msopenh264.git diff --git a/Classes/Base.lproj/ChatViewController.xib b/Classes/Base.lproj/ChatViewController.xib index 878b38caf..4f30247c4 100644 --- a/Classes/Base.lproj/ChatViewController.xib +++ b/Classes/Base.lproj/ChatViewController.xib @@ -1,8 +1,7 @@ - + - - + @@ -91,14 +90,11 @@ + + - - - - - @@ -113,4 +109,9 @@ - \ No newline at end of file + + + + + + diff --git a/Classes/Base.lproj/ContactsViewController.xib b/Classes/Base.lproj/ContactsViewController.xib index d16430f4d..ab36f8c0b 100644 --- a/Classes/Base.lproj/ContactsViewController.xib +++ b/Classes/Base.lproj/ContactsViewController.xib @@ -1,8 +1,8 @@ - + - - + + @@ -11,6 +11,7 @@ + @@ -21,7 +22,7 @@ - + @@ -109,11 +110,21 @@ + + + + + + + + + + @@ -127,4 +138,9 @@ - \ No newline at end of file + + + + + + diff --git a/Classes/Base.lproj/DialerViewController.xib b/Classes/Base.lproj/DialerViewController.xib index 51f2e90aa..bc4528347 100644 --- a/Classes/Base.lproj/DialerViewController.xib +++ b/Classes/Base.lproj/DialerViewController.xib @@ -1,8 +1,8 @@ - + - - + + @@ -63,7 +63,7 @@ - - - - - - - + + + @@ -114,12 +124,26 @@ + + + - \ No newline at end of file + + + + + + diff --git a/Classes/MainStoryboard.storyboard b/Classes/MainStoryboard.storyboard new file mode 100644 index 000000000..dc493538e --- /dev/null +++ b/Classes/MainStoryboard.storyboard @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 0c1f5edb9..f6a09756a 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -23,6 +23,7 @@ #import "LinphoneManager.h" #import "UICompositeViewController.h" +/* These imports are here so that we can import PhoneMainView.h without bothering to import all the rest of the view headers */ #import "AboutViewController.h" #import "FirstLoginViewController.h" #import "IncomingCallViewController.h" @@ -43,10 +44,23 @@ #import "ConsoleViewController.h" #import "ImageViewController.h" + +@class PhoneMainView; + +@interface RootViewManager : NSObject + +@property (nonatomic, retain) PhoneMainView* portraitViewController; +@property (nonatomic, retain) PhoneMainView* rotatingViewController; +@property (nonatomic, retain) NSMutableArray* viewDescriptionStack; + ++(RootViewManager*)instance; ++ (void)setupWithPortrait:(PhoneMainView*)portrait; +- (PhoneMainView*)currentView; + +@end + @interface PhoneMainView : UIViewController { @private - int loadCount; - NSMutableArray *viewStack; NSMutableArray *inhibitedEvents; NSTimer *batteryTimer; } @@ -54,6 +68,7 @@ @property (nonatomic, retain) IBOutlet UIView *statusBarBG; @property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController; +@property (nonatomic, retain) NSString* name; @property (readonly) UICompositeViewDescription *currentView; @property (readonly, retain) MPVolumeView* volumeView; @@ -73,6 +88,7 @@ - (void)addInhibitedEvent:(id)event; - (BOOL)removeInhibitedEvent:(id)event; +- (void)updateApplicationBadgeNumber; + (PhoneMainView*) instance; @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index d360fa9b6..d5b78c37e 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -25,7 +25,83 @@ #import "Utils.h" #import "DTActionSheet.h" -static PhoneMainView* phoneMainViewInstance=nil; + +static RootViewManager* rootViewManagerInstance = nil; + +@implementation RootViewManager { + PhoneMainView* currentViewController; +} + ++ (void)setupWithPortrait:(PhoneMainView*)portrait { + assert(rootViewManagerInstance == nil); + rootViewManagerInstance = [[RootViewManager alloc]initWithPortrait:portrait]; +} + +- (instancetype)initWithPortrait:(PhoneMainView*)portrait { + self = [super init]; + if ( self ){ + self.portraitViewController = portrait; + self.rotatingViewController = [[[PhoneMainView alloc] init] autorelease]; + + self.portraitViewController.name = @"Portrait"; + self.rotatingViewController.name = @"Rotating"; + + currentViewController = portrait; + self.viewDescriptionStack = [NSMutableArray array]; + + } + return self; +} + ++ (RootViewManager *)instance { + if( !rootViewManagerInstance ){ + @throw [NSException exceptionWithName:@"RootViewManager" reason:@"nil instance" userInfo:nil]; + } + return rootViewManagerInstance; +} + +- (PhoneMainView*)currentView { + return currentViewController; +} + +- (PhoneMainView*)setViewControllerForDescription:(UICompositeViewDescription*)description { + PhoneMainView* newMainView = description.landscapeMode ? self.rotatingViewController : self.portraitViewController; + + if( [LinphoneManager runningOnIpad] ) return currentViewController; + + if( newMainView != currentViewController ) + { + PhoneMainView* previousMainView = currentViewController; + UIInterfaceOrientation nextViewOrientation = newMainView.interfaceOrientation; + UIInterfaceOrientation previousOrientation = currentViewController.interfaceOrientation; + + Linphone_err(@"Changing rootViewController: %@ -> %@", currentViewController.name, newMainView.name); + currentViewController = newMainView; + LinphoneAppDelegate* delegate = (LinphoneAppDelegate*)[UIApplication sharedApplication].delegate; + + [UIView transitionWithView:delegate.window + duration:0.3 + options:UIViewAnimationOptionTransitionFlipFromLeft|UIViewAnimationOptionAllowAnimatedContent + animations:^{ + delegate.window.rootViewController = newMainView; + // when going to landscape-enabled view, we have to get the current portrait frame and orientation, + // because it could still have landscape-based size + if( nextViewOrientation != previousOrientation && newMainView == self.rotatingViewController ){ + newMainView.view.frame = previousMainView.view.frame; + [newMainView.mainViewController.view setFrame:previousMainView.mainViewController.view.frame]; + [newMainView willRotateToInterfaceOrientation:previousOrientation duration:0.3]; + [newMainView willAnimateRotationToInterfaceOrientation:previousOrientation duration:0.3]; + [newMainView didRotateFromInterfaceOrientation:nextViewOrientation]; + } + + } + completion:^(BOOL finished) { + }]; + } + return currentViewController; +} + +@end @implementation PhoneMainView @@ -38,11 +114,7 @@ static PhoneMainView* phoneMainViewInstance=nil; #pragma mark - Lifecycle Functions - (void)initPhoneMainView { - assert (!phoneMainViewInstance); - phoneMainViewInstance = self; currentView = nil; - viewStack = [[NSMutableArray alloc] init]; - loadCount = 0; // For avoiding IOS 4 bug inhibitedEvents = [[NSMutableArray alloc] init]; } @@ -75,7 +147,6 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController release]; [inhibitedEvents release]; - [viewStack release]; [super dealloc]; } @@ -84,26 +155,21 @@ static PhoneMainView* phoneMainViewInstance=nil; #pragma mark - ViewController Functions - (void)viewDidLoad { - // Avoid IOS 4 bug - if(loadCount++ > 0) - return; - [super viewDidLoad]; volumeView = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100,-100,16,16)]; volumeView.showsRouteButton = false; volumeView.userInteractionEnabled = false; - [self.view addSubview: mainViewController.view]; + [self.view addSubview:mainViewController.view]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [mainViewController viewWillAppear:animated]; - } - + } // Set observers [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) @@ -132,7 +198,7 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [mainViewController viewWillDisappear:animated]; } @@ -174,9 +240,6 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)viewDidUnload { [super viewDidUnload]; - - // Avoid IOS 4 bug - loadCount--; } - (void)setVolumeHidden:(BOOL)hidden { @@ -193,14 +256,13 @@ static PhoneMainView* phoneMainViewInstance=nil; } } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(interfaceOrientation == self.interfaceOrientation) - return YES; - return NO; -} - (NSUInteger)supportedInterfaceOrientations { - return 0; + if( [LinphoneManager runningOnIpad ] || [mainViewController currentViewSupportsLandscape] ) + return UIInterfaceOrientationMaskAll; + else { + return UIInterfaceOrientationMaskPortrait; + } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { @@ -225,7 +287,7 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; - [mainViewController clearCache:viewStack]; + [mainViewController clearCache:[RootViewManager instance].viewDescriptionStack]; } #pragma mark - Event Functions @@ -449,7 +511,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } + (PhoneMainView *) instance { - return phoneMainViewInstance; + return [[RootViewManager instance] currentView]; } - (void) showTabBar:(BOOL)show { @@ -460,18 +522,11 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController setStateBarHidden:!show]; } -+ (BOOL)isDarkBackgroundView:(UICompositeViewDescription*)view { - return ( [view equal:[DialerViewController compositeViewDescription]] || - [view equal:[IncomingCallViewController compositeViewDescription]] || - [view equal:[InCallViewController compositeViewDescription]] || - [view equal:[WizardViewController compositeViewDescription]]); -} - - (void)updateStatusBar:(UICompositeViewDescription*)to_view { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 // In iOS7, the app has a black background on dialer, incoming and incall, so we have to adjust the // status bar style for each transition to/from these views - BOOL toLightStatus = (to_view != NULL) && ![PhoneMainView isDarkBackgroundView:to_view]; + BOOL toLightStatus = (to_view != NULL) && ![to_view darkBackground]; if( !toLightStatus ) { // black bg: white text on black background [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; @@ -502,7 +557,8 @@ static PhoneMainView* phoneMainViewInstance=nil; - (UIViewController*)changeCurrentView:(UICompositeViewDescription*)view push:(BOOL)push { BOOL force = push; - if(!push) { + NSMutableArray* viewStack = [RootViewManager instance].viewDescriptionStack; + if(!push ) { force = [viewStack count] > 1; [viewStack removeAllObjects]; } @@ -512,27 +568,32 @@ static PhoneMainView* phoneMainViewInstance=nil; - (UIViewController*)_changeCurrentView:(UICompositeViewDescription*)view transition:(CATransition*)transition force:(BOOL)force { [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Change current view to %@", [view name]]; - - if(force || ![view equal: currentView]) { + + PhoneMainView* vc = [[RootViewManager instance] setViewControllerForDescription:view]; + + if(force || ![view equal:vc.currentView] || vc != self) { if(transition == nil) - transition = [PhoneMainView getTransition:currentView new:view]; + transition = [PhoneMainView getTransition:vc.currentView new:view]; if ([[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"] == true) { - [mainViewController setViewTransition:transition]; + [vc.mainViewController setViewTransition:transition]; } else { - [mainViewController setViewTransition:nil]; + [vc.mainViewController setViewTransition:nil]; } - [self updateStatusBar:view]; - [mainViewController changeView:view]; - currentView = view; + [vc updateStatusBar:view]; + [vc.mainViewController changeView:view]; + vc->currentView = view; } + + //[[RootViewManager instance] setViewControllerForDescription:view]; - NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject:currentView forKey:@"view"]; + NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject:vc->currentView forKey:@"view"]; [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneMainViewChange object:self userInfo:mdict]; - return [mainViewController getCurrentViewController]; + return [vc->mainViewController getCurrentViewController]; } - (void)popToView:(UICompositeViewDescription*)view { + NSMutableArray* viewStack = [RootViewManager instance].viewDescriptionStack; while([viewStack count] > 1 && ![[viewStack lastObject] equal:view]) { [viewStack removeLastObject]; } @@ -541,7 +602,8 @@ static PhoneMainView* phoneMainViewInstance=nil; - (UICompositeViewDescription *)firstView { UICompositeViewDescription *view = nil; - if([viewStack count]) { + NSArray* viewStack = [RootViewManager instance].viewDescriptionStack; + if([viewStack count]) { view = [viewStack objectAtIndex:0]; } return view; @@ -549,7 +611,8 @@ static PhoneMainView* phoneMainViewInstance=nil; - (UIViewController*)popCurrentView { [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Pop view"]; - if([viewStack count] > 1) { + NSMutableArray* viewStack = [RootViewManager instance].viewDescriptionStack; + if([viewStack count] > 1) { [viewStack removeLastObject]; [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition] force:TRUE]; return [mainViewController getCurrentViewController]; diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 702df5c96..af73214e2 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -630,7 +630,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (NSSet*)findHiddenKeys { if(![LinphoneManager isLcReady]) { - [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't filter settings: Linphone core not read"]; + [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't filter settings: Linphone core not ready"]; } LinphoneManager* lm = [LinphoneManager instance]; NSMutableSet *hiddenKeys = [NSMutableSet set]; diff --git a/Classes/Utils/DTFoundation/DTActionSheet.h b/Classes/Utils/DTFoundation/DTActionSheet.h index 71ab47650..b08744656 100755 --- a/Classes/Utils/DTFoundation/DTActionSheet.h +++ b/Classes/Utils/DTFoundation/DTActionSheet.h @@ -6,45 +6,63 @@ // Copyright (c) 2012 Cocoanetics. All rights reserved. // +#import "DTWeakSupport.h" + +// the block to execute when an option button is tapped typedef void (^DTActionSheetBlock)(void); /** - Extends UIActionSheet with support for blocks + Extends UIActionSheet with support for blocks. */ @interface DTActionSheet : UIActionSheet /** - Initializes the action sheet using the specified title. + Initializes the action sheet using the specified title. + @param title The title */ -- (id)initWithTitle:(NSString *)title; +- (instancetype)initWithTitle:(NSString *)title; /** Adds a custom button to the action sheet. @param title The title of the new button. @param block The block to execute when the button is tapped. @returns The index of the new button. Button indices start at 0 and increase in the order they are added. -*/ + */ - (NSInteger)addButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block; /** Adds a custom destructive button to the action sheet. - + Since there can only be one destructive button a previously marked destructive button becomes a normal button. @param title The title of the new button. @param block The block to execute when the button is tapped. @returns The index of the new button. Button indices start at 0 and increase in the order they are added. - */ + */ - (NSInteger)addDestructiveButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block; /** Adds a custom cancel button to the action sheet. - + Since there can only be one cancel button a previously marked cancel button becomes a normal button. @param title The title of the new button. @param block The block to execute when the button is tapped. @returns The index of the new button. Button indices start at 0 and increase in the order they are added. - */ + */ - (NSInteger)addCancelButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block; -@end +/** + Adds a custom cancel button to the action sheet. + + Since there can only be one cancel button a previously marked cancel button becomes a normal button. + @param title The title of the new button. + @returns The index of the new button. Button indices start at 0 and increase in the order they are added. + */ +- (NSInteger)addCancelButtonWithTitle:(NSString *)title; + +/** + * Use the actionSheetDelegate when you want to to receive UIActionSheetDelegate messages. + */ +@property (nonatomic, DT_WEAK_PROPERTY) id actionSheetDelegate; + +@end \ No newline at end of file diff --git a/Classes/Utils/DTFoundation/DTActionSheet.m b/Classes/Utils/DTFoundation/DTActionSheet.m index f3a474c75..ae091c824 100755 --- a/Classes/Utils/DTFoundation/DTActionSheet.m +++ b/Classes/Utils/DTFoundation/DTActionSheet.m @@ -7,6 +7,7 @@ // #import "DTActionSheet.h" +#import "DTWeakSupport.h" @interface DTActionSheet () @@ -14,55 +15,74 @@ @implementation DTActionSheet { - id _externalDelegate; - NSMutableDictionary *_actionsPerIndex; - - // lookup bitmask what delegate methods are implemented - struct - { - unsigned int delegateSupportsActionSheetCancel:1; - unsigned int delegateSupportsWillPresentActionSheet:1; - unsigned int delegateSupportsDidPresentActionSheet:1; - unsigned int delegateSupportsWillDismissWithButtonIndex:1; - unsigned int delegateSupportsDidDismissWithButtonIndex:1; - } _delegateFlags; } -- (id)init +// designated initializer +- (instancetype)init { self = [super init]; if (self) { _actionsPerIndex = [[NSMutableDictionary alloc] init]; - self.delegate = self; + [super setDelegate:self]; + } - return self; } -// designated initializer -- (id)initWithTitle:(NSString *)title +- (instancetype)initWithTitle:(NSString *)title +{ + return [self initWithTitle:title delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; +} + +- (instancetype)initWithTitle:(NSString *)title delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... { self = [self init]; - if (self) + if (self) { self.title = title; + + if (otherButtonTitles != nil) { + [self addButtonWithTitle:otherButtonTitles]; + va_list args; + va_start(args, otherButtonTitles); + NSString *title = nil; + while( (title = va_arg(args, NSString *)) ) { + [self addButtonWithTitle:title]; + } + va_end(args); + } + + if (destructiveButtonTitle) { + [self addDestructiveButtonWithTitle:destructiveButtonTitle block:nil]; + } + if (cancelButtonTitle) { + [self addCancelButtonWithTitle:cancelButtonTitle block:nil]; + } + + self.actionSheetDelegate = delegate; } - + return self; } +- (void)dealloc +{ + [super setDelegate:nil]; + self.actionSheetDelegate = nil; +} + - (NSInteger)addButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block { NSInteger retIndex = [self addButtonWithTitle:title]; - + if (block) { - NSNumber *key = [NSNumber numberWithInt:retIndex]; - [_actionsPerIndex setObject:[[block copy] autorelease] forKey:key]; + NSNumber *key = [NSNumber numberWithInteger:retIndex]; + [_actionsPerIndex setObject:[block copy] forKey:key]; } - + return retIndex; } @@ -70,122 +90,90 @@ { NSInteger retIndex = [self addButtonWithTitle:title block:block]; [self setDestructiveButtonIndex:retIndex]; - + return retIndex; } +- (NSInteger)addCancelButtonWithTitle:(NSString *)title +{ + return [self addCancelButtonWithTitle:title block:nil]; +} + - (NSInteger)addCancelButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block { NSInteger retIndex = [self addButtonWithTitle:title block:block]; [self setCancelButtonIndex:retIndex]; - + return retIndex; } -#pragma UIActionSheetDelegate (forwarded) +#pragma mark - UIActionSheetDelegate (forwarded) - (void)actionSheetCancel:(UIActionSheet *)actionSheet { - if (_delegateFlags.delegateSupportsActionSheetCancel) + if ([self.actionSheetDelegate respondsToSelector:@selector(actionSheetCancel:)]) { - [_externalDelegate actionSheetCancel:actionSheet]; + [self.actionSheetDelegate actionSheetCancel:actionSheet]; } } - (void)willPresentActionSheet:(UIActionSheet *)actionSheet { - if (_delegateFlags.delegateSupportsWillPresentActionSheet) + if ([self.actionSheetDelegate respondsToSelector:@selector(willPresentActionSheet:)]) { - [_externalDelegate willPresentActionSheet:actionSheet]; + [self.actionSheetDelegate willPresentActionSheet:actionSheet]; } } - (void)didPresentActionSheet:(UIActionSheet *)actionSheet { - if (_delegateFlags.delegateSupportsDidPresentActionSheet) + if ([self.actionSheetDelegate respondsToSelector:@selector(didPresentActionSheet:)]) { - [_externalDelegate didPresentActionSheet:actionSheet]; + [self.actionSheetDelegate didPresentActionSheet:actionSheet]; } } - (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex { - if (_delegateFlags.delegateSupportsWillDismissWithButtonIndex) + if ([self.actionSheetDelegate respondsToSelector:@selector(actionSheet:willDismissWithButtonIndex:)]) { - [_externalDelegate actionSheet:actionSheet willDismissWithButtonIndex:buttonIndex]; + [self.actionSheetDelegate actionSheet:actionSheet willDismissWithButtonIndex:buttonIndex]; } } - - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { - NSNumber *key = [NSNumber numberWithInt:buttonIndex]; - + if ([self.actionSheetDelegate respondsToSelector:@selector(actionSheet:didDismissWithButtonIndex:)]) + { + [self.actionSheetDelegate actionSheet:actionSheet didDismissWithButtonIndex:buttonIndex]; + } +} + +- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex +{ + NSNumber *key = [NSNumber numberWithInteger:buttonIndex]; + DTActionSheetBlock block = [_actionsPerIndex objectForKey:key]; - + if (block) { block(); } - if (_delegateFlags.delegateSupportsDidDismissWithButtonIndex) + if ([self.actionSheetDelegate respondsToSelector:@selector(actionSheet:clickedButtonAtIndex:)]) { - [_externalDelegate actionSheet:actionSheet didDismissWithButtonIndex:buttonIndex]; + [self.actionSheetDelegate actionSheet:actionSheet clickedButtonAtIndex:buttonIndex]; } } - -#pragma mark Properties - -- (id )delegate -{ - return _externalDelegate; -} +#pragma mark - Properties - (void)setDelegate:(id )delegate { - if (delegate == self) + if (delegate) { - [super setDelegate:self]; - } - else if (delegate == nil) - { - [super setDelegate:nil]; - _externalDelegate = nil; - } - else - { - _externalDelegate = delegate; - } - - // wipe - memset(&_delegateFlags, 0, sizeof(_delegateFlags)); - - // set flags according to available methods in delegate - if ([_externalDelegate respondsToSelector:@selector(actionSheetCancel:)]) - { - _delegateFlags.delegateSupportsActionSheetCancel = YES; - } - - if ([_externalDelegate respondsToSelector:@selector(willPresentActionSheet:)]) - { - _delegateFlags.delegateSupportsWillPresentActionSheet = YES; - } - - if ([_externalDelegate respondsToSelector:@selector(didPresentActionSheet:)]) - { - _delegateFlags.delegateSupportsDidPresentActionSheet = YES; - } - - if ([_externalDelegate respondsToSelector:@selector(actionSheet:willDismissWithButtonIndex:)]) - { - _delegateFlags.delegateSupportsWillDismissWithButtonIndex = YES; - } - - if ([_externalDelegate respondsToSelector:@selector(actionSheet:didDismissWithButtonIndex:)]) - { - _delegateFlags.delegateSupportsDidDismissWithButtonIndex = YES; + NSLog(@"Calling setDelegate is not supported! Use setActionSheetDelegate instead"); } } -@end +@end \ No newline at end of file diff --git a/Classes/Utils/DTFoundation/DTWeakSupport.h b/Classes/Utils/DTFoundation/DTWeakSupport.h new file mode 100644 index 000000000..a74444baf --- /dev/null +++ b/Classes/Utils/DTFoundation/DTWeakSupport.h @@ -0,0 +1,33 @@ +// +// DTWeakSupport.h +// DTFoundation +// +// Created by Oliver Drobnik on 6/3/13. +// Copyright (c) 2013 Cocoanetics. All rights reserved. +// + +/** + Useful defines for building code the compiles with zeroing weak references if the deployment target allows it. This is possible from minimum supported iOS 5.0 and OS X 10.7 and above. Note that on OS X 10.7 some AppKit classes do not support having a weak ref, e.g. NSWindowController or NSViewController. + */ + +#import + +#if __has_feature(objc_arc_weak) + +// zeroing weak refs are supported for ivars and properties +#define DT_WEAK_VARIABLE __weak +#define DT_WEAK_PROPERTY weak + +#elif __has_feature(objc_arc) + +/// zeroing weak refs not supported, fall back to unsafe unretained and assigning +#define DT_WEAK_VARIABLE __unsafe_unretained +#define DT_WEAK_PROPERTY assign + +#else + +// define something, as this header might be included in a non-ARC project for using compiled code from an ARC static lib +#define DT_WEAK_VARIABLE +#define DT_WEAK_PROPERTY assign + +#endif \ No newline at end of file diff --git a/Classes/Utils/Utils.h b/Classes/Utils/Utils.h index 9b2b36a78..28b950d5d 100644 --- a/Classes/Utils/Utils.h +++ b/Classes/Utils/Utils.h @@ -27,8 +27,8 @@ }) typedef enum _LinphoneLoggerSeverity { - LinphoneLoggerLog = 0, - LinphoneLoggerDebug, + LinphoneLoggerDebug = 0, + LinphoneLoggerLog, LinphoneLoggerWarning, LinphoneLoggerError, LinphoneLoggerFatal diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 0609bf960..5e3313f13 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -129,6 +129,7 @@ static UICompositeViewDescription *compositeDescription = nil; fullscreen:false landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; + compositeDescription.darkBackground = true; } return compositeDescription; } @@ -917,7 +918,8 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView setAnimationCurve:curve]; [UIView setAnimationBeginsFromCurrentState:TRUE]; - if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + if(([[UIDevice currentDevice].systemVersion floatValue] < 8) && + UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { int width = endFrame.size.height; endFrame.size.height = endFrame.size.width; endFrame.size.width = width; diff --git a/LinphoneTester Tests/DTObjectBlockExecutor.h b/LinphoneTester Tests/DTObjectBlockExecutor.h new file mode 100644 index 000000000..19926d805 --- /dev/null +++ b/LinphoneTester Tests/DTObjectBlockExecutor.h @@ -0,0 +1,26 @@ +// +// DTObjectBlockExecutor.h +// DTFoundation +// +// Created by Oliver Drobnik on 12.02.13. +// Copyright (c) 2013 Cocoanetics. All rights reserved. +// + +/** + This class is used by [NSObject addDeallocBlock:] to execute blocks on dealloc + */ + +@interface DTObjectBlockExecutor : NSObject + +/** + Convenience method to create a block executor with a deallocation block + @param block The block to execute when the created receiver is being deallocated + */ ++ (id)blockExecutorWithDeallocBlock:(void(^)())block; + +/** + Block to execute when dealloc of the receiver is called + */ +@property (nonatomic, copy) void (^deallocBlock)(); + +@end diff --git a/LinphoneTester Tests/DTObjectBlockExecutor.m b/LinphoneTester Tests/DTObjectBlockExecutor.m new file mode 100644 index 000000000..4e9dfd0fd --- /dev/null +++ b/LinphoneTester Tests/DTObjectBlockExecutor.m @@ -0,0 +1,30 @@ +// +// DTObjectBlockExecutor.m +// DTFoundation +// +// Created by Oliver Drobnik on 12.02.13. +// Copyright (c) 2013 Cocoanetics. All rights reserved. +// + +#import "DTObjectBlockExecutor.h" + + +@implementation DTObjectBlockExecutor + ++ (id)blockExecutorWithDeallocBlock:(void(^)())block +{ + DTObjectBlockExecutor *executor = [[DTObjectBlockExecutor alloc] init]; + executor.deallocBlock = block; // copy + return executor; +} + +- (void)dealloc +{ + if (_deallocBlock) + { + _deallocBlock(); + _deallocBlock = nil; + } +} + +@end diff --git a/LinphoneTesterTests/LinphoneTesterTests-Info.plist b/LinphoneTester Tests/LinphoneTester Tests-Info.plist similarity index 100% rename from LinphoneTesterTests/LinphoneTesterTests-Info.plist rename to LinphoneTester Tests/LinphoneTester Tests-Info.plist diff --git a/LinphoneTester Tests/LinphoneTester Tests-Prefix.pch b/LinphoneTester Tests/LinphoneTester Tests-Prefix.pch new file mode 100644 index 000000000..b5ffd7806 --- /dev/null +++ b/LinphoneTester Tests/LinphoneTester Tests-Prefix.pch @@ -0,0 +1,10 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/LinphoneTester Tests/LinphoneTester_Tests.m b/LinphoneTester Tests/LinphoneTester_Tests.m new file mode 100644 index 000000000..b4631e2a0 --- /dev/null +++ b/LinphoneTester Tests/LinphoneTester_Tests.m @@ -0,0 +1,106 @@ +// +// LinphoneTester_Tests.m +// LinphoneTester Tests +// +// Created by guillaume on 10/09/2014. +// +// + +#import +#include "linphone/linphonecore.h" +#include "linphone/liblinphone_tester.h" +#import "NSObject+DTRuntime.h" + +@interface LinphoneTester_Tests : XCTestCase + +@end + +@implementation LinphoneTester_Tests { + NSString* bundlePath; + NSString* documentPath; +} + + +static void linphone_log_function(OrtpLogLevel lev, const char *fmt, va_list args) { + NSString* log = [[NSString alloc] initWithFormat:[NSString stringWithUTF8String:fmt] arguments:args]; + NSLog(@"%@",log); +} + + +void LSLog(NSString* fmt, ...){ + va_list args; + va_start(args, fmt); + linphone_log_function(ORTP_MESSAGE, [fmt UTF8String], args); + va_end(args); +} + + + + +- (id)init { + self = [super init]; + if( self ){ + bundlePath = [[NSBundle mainBundle] bundlePath]; + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + documentPath = [paths objectAtIndex:0]; + LSLog(@"Bundle path: %@", bundlePath); + LSLog(@"Document path: %@", documentPath); + + liblinphone_tester_set_fileprefix([bundlePath UTF8String]); + liblinphone_tester_set_writable_dir_prefix( ms_strdup([documentPath UTF8String]) ); + } + return self; +} + ++ (NSArray*)skippedSuites { + NSArray* skipped_suites = @[@"Flexisip"]; + return skipped_suites; +} + ++ (void)initialize { + liblinphone_tester_init(); + + int count = liblinphone_tester_nb_test_suites(); + + for (int i=0; i +#import "DTObjectBlockExecutor.h" + +@implementation NSObject (DTRuntime) + +static char DTRuntimeDeallocBlocks; + +#pragma mark - Blocks + +- (void)addDeallocBlock:(void(^)())block +{ + // don't accept NULL block + NSParameterAssert(block); + + NSMutableArray *deallocBlocks = objc_getAssociatedObject(self, &DTRuntimeDeallocBlocks); + + // add array of dealloc blocks if not existing yet + if (!deallocBlocks) + { + deallocBlocks = [[NSMutableArray alloc] init]; + + objc_setAssociatedObject(self, &DTRuntimeDeallocBlocks, deallocBlocks, OBJC_ASSOCIATION_RETAIN); + } + + DTObjectBlockExecutor *executor = [DTObjectBlockExecutor blockExecutorWithDeallocBlock:block]; + + [deallocBlocks addObject:executor]; +} + ++ (BOOL)addInstanceMethodWithSelectorName:(NSString *)selectorName block:(void(^)(id))block +{ + // don't accept nil name + NSParameterAssert(selectorName); + + // don't accept NULL block + NSParameterAssert(block); + + // See http://stackoverflow.com/questions/6357663/casting-a-block-to-a-void-for-dynamic-class-method-resolution + +#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_7 + void *impBlockForIMP = (void *)objc_unretainedPointer(block); +#else + id impBlockForIMP = (__bridge id)objc_unretainedPointer(block); +#endif + + IMP myIMP = imp_implementationWithBlock(impBlockForIMP); + + SEL selector = NSSelectorFromString(selectorName); + return class_addMethod(self, selector, myIMP, "v@:"); +} + +#pragma mark - Method Swizzling + ++ (void)swizzleMethod:(SEL)selector withMethod:(SEL)otherSelector +{ + // my own class is being targetted + Class c = [self class]; + + // get the methods from the selectors + Method originalMethod = class_getInstanceMethod(c, selector); + Method otherMethod = class_getInstanceMethod(c, otherSelector); + + if (class_addMethod(c, selector, method_getImplementation(otherMethod), method_getTypeEncoding(otherMethod))) + { + class_replaceMethod(c, otherSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); + } + else + { + method_exchangeImplementations(originalMethod, otherMethod); + } +} + ++ (void)swizzleClassMethod:(SEL)selector withMethod:(SEL)otherSelector +{ + // my own class is being targetted + Class c = [self class]; + + // get the methods from the selectors + Method originalMethod = class_getClassMethod(c, selector); + Method otherMethod = class_getClassMethod(c, otherSelector); + +// if (class_addMethod(c, selector, method_getImplementation(otherMethod), method_getTypeEncoding(otherMethod))) +// { +// class_replaceMethod(c, otherSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); +// } +// else +// { + method_exchangeImplementations(originalMethod, otherMethod); +// } + +} + +@end diff --git a/LinphoneTesterTests/en.lproj/InfoPlist.strings b/LinphoneTester Tests/en.lproj/InfoPlist.strings similarity index 100% rename from LinphoneTesterTests/en.lproj/InfoPlist.strings rename to LinphoneTester Tests/en.lproj/InfoPlist.strings diff --git a/LinphoneTester/MasterViewController.m b/LinphoneTester/MasterViewController.m index d1d0243ad..665d89832 100644 --- a/LinphoneTester/MasterViewController.m +++ b/LinphoneTester/MasterViewController.m @@ -47,20 +47,20 @@ static void linphone_log_function(OrtpLogLevel lev, const char *fmt, va_list arg NSString* log = [[NSString alloc] initWithFormat:[NSString stringWithUTF8String:fmt] arguments:args]; NSLog(@"%@",log); - [logsBuffer addObject:log]; - - if (logsBuffer.count >= kLogsBufferCapacity ) { - [lastLogs addObjectsFromArray:logsBuffer]; - - if( lastLogs.count >= kLastLogsCapacity - kLogsBufferCapacity ){ - [lastLogs removeObjectsInRange:NSMakeRange(0, kLogsBufferCapacity)]; - } - [[NSNotificationCenter defaultCenter] postNotificationName:kLogsUpdateNotification - object:nil - userInfo:@{@"newlogs": [logsBuffer copy]}]; - [logsBuffer removeAllObjects]; - } - +// [logsBuffer addObject:log]; +// +// if (logsBuffer.count >= kLogsBufferCapacity ) { +// [lastLogs addObjectsFromArray:logsBuffer]; +// +// if( lastLogs.count >= kLastLogsCapacity - kLogsBufferCapacity ){ +// [lastLogs removeObjectsInRange:NSMakeRange(0, kLogsBufferCapacity)]; +// } +// [[NSNotificationCenter defaultCenter] postNotificationName:kLogsUpdateNotification +// object:nil +// userInfo:@{@"newlogs": [logsBuffer copy]}]; +// [logsBuffer removeAllObjects]; +// } + } diff --git a/LinphoneTester/main.m b/LinphoneTester/main.m index ad7e760b7..4267e33f9 100644 --- a/LinphoneTester/main.m +++ b/LinphoneTester/main.m @@ -9,9 +9,96 @@ #import #import "AppDelegate.h" +#include +#include + +static NSString * const kKEY_CRASH_REPORT = @"CRASH_REPORT"; +static NSString * const kKEY_ExceptionName = @"UnhandledExceptionName"; +static NSString * const kKEY_ExceptionReason = @"UnhandledExceptionReason"; +static NSString * const kKEY_ExceptionUserInfo = @"UnhandledExceptionUserInfo"; +static NSString * const kKEY_ExceptionCallStack = @"UnhandledExceptionCallStack"; +static NSString * const kKEY_ExceptionScreenshot = @"UnhandledExceptionScreenshot"; +static NSString * const kKEY_ExceptionTimestamp = @"UnhandledExceptionTimestamp"; + +__unused void unhandledExceptionHandler(NSException *exception) { + NSMutableDictionary *crashReport = [NSMutableDictionary dictionary]; + crashReport[kKEY_ExceptionName] = exception.name; + crashReport[kKEY_ExceptionReason] = exception.reason; + crashReport[kKEY_ExceptionUserInfo] = exception.userInfo ?: [NSNull null].debugDescription; + crashReport[kKEY_ExceptionCallStack] = exception.callStackSymbols.debugDescription; + + NSLog(@"CRASH: %@ - %@", exception.name, exception.callStackSymbols.debugDescription); + + [[NSUserDefaults standardUserDefaults] setObject:[NSDictionary dictionaryWithDictionary:crashReport] forKey:kKEY_CRASH_REPORT]; + [[NSUserDefaults standardUserDefaults] synchronize]; + exit(1); +} + +/* SignalHandler + * + * Handle uncaught signals + */ + +void SignalHandler(int sig, siginfo_t *info, void *context) +{ + void *frames[128]; + int i,len = backtrace(frames, 128); + char **symbols = backtrace_symbols(frames,len); + + /* + * Now format into a message for sending to the user + */ + + NSMutableString *buffer = [[NSMutableString alloc] initWithCapacity:4096]; + + NSBundle *bundle = [NSBundle mainBundle]; + [buffer appendFormat:@"PComp version %@ build %@\n\n", + [bundle objectForInfoDictionaryKey:@"CFBundleVersion"], + [bundle objectForInfoDictionaryKey:@"CIMBuildNumber"]]; + [buffer appendString:@"Uncaught Signal\n"]; + [buffer appendFormat:@"si_signo %d\n",info->si_signo]; + [buffer appendFormat:@"si_code %d\n",info->si_code]; + [buffer appendFormat:@"si_value %d\n",info->si_value.sival_int]; + [buffer appendFormat:@"si_errno %d\n",info->si_errno]; + [buffer appendFormat:@"si_addr %p\n",info->si_addr]; + [buffer appendFormat:@"si_status %d\n",info->si_status]; + [buffer appendString:@"Stack trace:\n\n"]; + for (i = 0; i < len; ++i) { + [buffer appendFormat:@"%4d - %s\n",i,symbols[i]]; + } + + /* + * Get the error file to write this to + */ + + NSLog(@"Error %@",buffer); + exit(1); +} + + + +void InstallUncaughtExceptionHandler() +{ + NSSetUncaughtExceptionHandler(&unhandledExceptionHandler); + struct sigaction mySigAction; + mySigAction.sa_sigaction = SignalHandler; + mySigAction.sa_flags = SA_SIGINFO; + + sigemptyset(&mySigAction.sa_mask); + sigaction(SIGQUIT, &mySigAction, NULL); + sigaction(SIGILL, &mySigAction, NULL); + sigaction(SIGTRAP, &mySigAction, NULL); + sigaction(SIGABRT, &mySigAction, NULL); + sigaction(SIGEMT, &mySigAction, NULL); + sigaction(SIGFPE, &mySigAction, NULL); + sigaction(SIGBUS, &mySigAction, NULL); + sigaction(SIGSEGV, &mySigAction, NULL); + sigaction(SIGSYS, &mySigAction, NULL); +} int main(int argc, char * argv[]) { + InstallUncaughtExceptionHandler(); @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } diff --git a/LinphoneTesterTests/LinphoneTesterTests.m b/LinphoneTesterTests/LinphoneTesterTests.m deleted file mode 100644 index 28c813448..000000000 --- a/LinphoneTesterTests/LinphoneTesterTests.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// LinphoneTesterTests.m -// LinphoneTesterTests -// -// Created by guillaume on 28/05/2014. -// -// - -#import - -@interface LinphoneTesterTests : XCTestCase - -@end - -@implementation LinphoneTesterTests - -- (void)setUp -{ - [super setUp]; - // Put setup code here. This method is called before the invocation of each test method in the class. -} - -- (void)tearDown -{ - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample -{ - XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); -} - -@end diff --git a/Resources/linphonerc b/Resources/linphonerc index 4da97f006..360d286b7 100644 --- a/Resources/linphonerc +++ b/Resources/linphonerc @@ -2,6 +2,8 @@ contact="Linphone iPhone" keepalive_period=30000 default_proxy=0 +sip_port=-1 +sip_tcp_port=-1 [rtp] audio_rtp_port=7076 @@ -21,6 +23,11 @@ firewall_policy=0 download_bw=380 upload_bw=380 +[sound] +playback_dev_id=AU: Audio Unit Receiver +capture_dev_id=AU: Audio Unit Receiver +eq_active=0 + [app] rotation_preference=auto animations_preference=1 @@ -29,7 +36,7 @@ use_system_contacts=0 start_at_boot_preference=1 backgroundmode_preference=1 autoanswer_notif_preference=1 - +voiceproc_preference=1 [default_values] reg_expires=600 \ No newline at end of file diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index 862641b0e..f9e2ab486 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -26,11 +26,11 @@ video_jitt_comp=60 nortp_timeout=30 [sound] -playback_dev_id=AU: Audio Unit Receiver ringer_dev_id=AQ: Audio Queue Device -capture_dev_id=AU: Audio Unit Receiver echocancellation=0 dtmf_player_amp=0.007 +eq_location=mic +eq_gains=50:2:50 100:2:50 [misc] history_max_size=30 @@ -42,7 +42,7 @@ domain=sip.linphone.org proxy=sip.linphone.org:5223 password_length=6 username_length=4 -expires=604800 +expires=1314000 push_notification=1 transport=tls sharing_server=https://www.linphone.org:444/upload.php diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad index 7f828cd26..b34cdc13d 100644 --- a/Resources/linphonerc-factory~ipad +++ b/Resources/linphonerc-factory~ipad @@ -26,11 +26,11 @@ video_jitt_comp=60 nortp_timeout=30 [sound] -playback_dev_id=AU: Audio Unit Receiver ringer_dev_id=AQ: Audio Queue Device -capture_dev_id=AU: Audio Unit Receiver echocancellation=0 dtmf_player_amp=0.007 +eq_location=mic +eq_gains=50:2:50 100:2:50 [misc] history_max_size=30 @@ -42,7 +42,7 @@ domain=sip.linphone.org proxy=sip.linphone.org:5223 password_length=6 username_length=4 -expires=604800 +expires=1314000 push_notification=1 transport=tls sharing_server=https://www.linphone.org:444/upload.php diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad index 008d4a702..2f010650c 100644 --- a/Resources/linphonerc~ipad +++ b/Resources/linphonerc~ipad @@ -2,6 +2,8 @@ contact="Linphone iPhone" keepalive_period=30000 default_proxy=0 +sip_port=-1 +sip_tcp_port=-1 [rtp] audio_rtp_port=7076 @@ -21,6 +23,11 @@ firewall_policy=0 download_bw=512 upload_bw=512 +[sound] +playback_dev_id=AU: Audio Unit Receiver +capture_dev_id=AU: Audio Unit Receiver +eq_active=0 + [app] rotation_preference=auto animations_preference=1 @@ -29,6 +36,7 @@ use_system_contacts=0 start_at_boot_preference=1 backgroundmode_preference=1 autoanswer_notif_preference=1 +voiceproc_preference=1 [default_values] reg_expires=600 diff --git a/Resources/wizard_linphone_create.rc b/Resources/wizard_linphone_create.rc index 75946fd57..292d662d4 100644 --- a/Resources/wizard_linphone_create.rc +++ b/Resources/wizard_linphone_create.rc @@ -5,7 +5,7 @@ <sip:sip.linphone.org:5223;transport=tls> <sip:sip.linphone.org:5223;transport=tls> sip:?@sip.linphone.org - 604800 + 1314000 1 0 0 diff --git a/Resources/wizard_linphone_existing.rc b/Resources/wizard_linphone_existing.rc index 2b2d950e9..2244776e8 100644 --- a/Resources/wizard_linphone_existing.rc +++ b/Resources/wizard_linphone_existing.rc @@ -5,7 +5,7 @@ <sip:sip.linphone.org:5223;transport=tls> <sip:sip.linphone.org:5223;transport=tls> sip:?@sip.linphone.org - 604800 + 1314000 1 0 0 diff --git a/Settings/InAppSettings.bundle/Audio.plist b/Settings/InAppSettings.bundle/Audio.plist index ac3e769a2..1121dd229 100644 --- a/Settings/InAppSettings.bundle/Audio.plist +++ b/Settings/InAppSettings.bundle/Audio.plist @@ -198,6 +198,26 @@ Type PSToggleSwitchSpecifier + + DefaultValue + Simple + Key + adaptive_rate_algorithm_preference + Title + Adaptive rate algorithm + Titles + + Simple + Stateful + + Type + PSMultiValueSpecifier + Values + + Simple + Stateful + + DefaultValue 36 @@ -226,6 +246,26 @@ 128 + + DefaultValue + + Key + voiceproc_preference + Title + Enable Voice Processing + Type + PSToggleSwitchSpecifier + + + DefaultValue + + Key + eq_active + Title + Enable Bass Boost + Type + PSToggleSwitchSpecifier + diff --git a/Settings/InAppSettings.bundle/Call.plist b/Settings/InAppSettings.bundle/Call.plist index 545bb198d..3b2503bfd 100644 --- a/Settings/InAppSettings.bundle/Call.plist +++ b/Settings/InAppSettings.bundle/Call.plist @@ -88,6 +88,24 @@ IASKTextAlignment IASKUITextAlignmentRight + + Key + voice_mail_uri_preference + Title + Voice mail URI + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Type + PSTextFieldSpecifier + IASKTextAlignment + IASKUITextAlignmentRight + diff --git a/Settings/InAppSettings.bundle/en.lproj/Audio.strings b/Settings/InAppSettings.bundle/en.lproj/Audio.strings index 4384de768..db5389c2a 100644 --- a/Settings/InAppSettings.bundle/en.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/en.lproj/Audio.strings @@ -48,3 +48,9 @@ /* Codec bitrate limit */ "Codec bitrate limit" = "Codec bitrate limit"; + +/* Voice processing */ +"Enable Voice Processing"="Enable Voice Processing"; + +/* Bass Boost / equalizer */ +"Enable Bass Boost"="Enable Bass Boost"; \ No newline at end of file diff --git a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings index c90dc9783..5295f9cc3 100644 --- a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings @@ -48,3 +48,16 @@ /* Codec bitrate limit */ "Codec bitrate limit" = "Limite de débit du codec"; + +/* Voice processing */ +"Enable Voice Processing"="Optimiser le son pour la VoIP"; + +/* Bass Boost / equalizer */ +"Enable Bass Boost"="Activer Bass Boost"; + +/* Adaptative */ +"Adaptive rate algorithm"="Adaptation du débit"; + +"Simple"="Simple"; + +"Stateful"="Stateful"; \ No newline at end of file diff --git a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings index 2b325e3ae..05456dfcd 100644 --- a/Settings/InAppSettings.bundle/ru.lproj/Audio.strings +++ b/Settings/InAppSettings.bundle/ru.lproj/Audio.strings @@ -48,3 +48,9 @@ /* Codec bitrate limit */ "Codec bitrate limit" = "Codec bitrate limit"; + +/* Voice processing */ +"Enable Voice Processing"="Enable Voice Processing"; + +/* Bass Boost / equalizer */ +"Enable Bass Boost"="Enable Bass Boost"; \ No newline at end of file diff --git a/UI.md b/UI.md new file mode 100644 index 000000000..e048dafdc --- /dev/null +++ b/UI.md @@ -0,0 +1,34 @@ + +Quick UI reference for Linphone iOS: + +- The app is contained in a window, which resides in the MainStoryboard file. +- The delegate is set to LinphoneAppDelegate in main.m, in the UIApplicationMain() by passing its class +- Basic layout: + + +MainStoryboard + | + | (rootViewController) + | + PhoneMainView ---> view #--> app background + | | + | #--> statusbar background + | + | (mainViewController) + | + UICompositeViewController : TPMultilayout + | + #---> view #--> stateBar + | + #--> contentView + | + #--> tabBar + + +When the app is started, the phoneMainView gets asked to transition to the Dialer view or the Wizard view. +PhoneMainView exposes the -changeCurrentView: method, which will setup its +Any Linphone view is actually presented in the UICompositeViewController, with or without a stateBar and tabBar. + +The UICompositeViewController consists of 3 areas laid out vertically. From top to bottom: StateBar, Content and TabBar. +The TabBar is usually the UIMainBar, which is used as a navigation controller: clicking on each of the buttons will trigger +a transition to another "view". \ No newline at end of file diff --git a/linphone-Info.plist b/linphone-Info.plist index 1fa197020..2f7284c5b 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -59,7 +59,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.7.2 + 3.7.3 CFBundleURLTypes @@ -100,11 +100,9 @@ CFBundleVersion - 2.2.2 - NSMainNibFile - LinphoneApp - NSMainNibFile~ipad - LinphoneApp + 2.2.3 + LSRequiresIPhoneOS + UIApplicationExitsOnSuspend UIBackgroundModes @@ -117,6 +115,8 @@ linphone_splashscreen UILaunchImageFile~iphone linphone_splashscreen + UIMainStoryboardFile + MainStoryboard UIRequiredDeviceCapabilities wifi diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 17ccb5ea7..ec75b5504 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -203,6 +203,10 @@ 57F005C915EE2D9200914747 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C615EE2D9200914747 /* linphonerc-factory */; }; 57F005CA15EE2D9200914747 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C715EE2D9200914747 /* linphonerc-factory~ipad */; }; 57F005CB15EE2D9200914747 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C715EE2D9200914747 /* linphonerc-factory~ipad */; }; + 631C4FB119D2A8F2004BFE77 /* UIDigitButtonLongPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = 631C4FB019D2A8F2004BFE77 /* UIDigitButtonLongPlus.m */; }; + 631C4FB219D2A8F2004BFE77 /* UIDigitButtonLongPlus.m in Sources */ = {isa = PBXBuildFile; fileRef = 631C4FB019D2A8F2004BFE77 /* UIDigitButtonLongPlus.m */; }; + 631C4FB719D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m in Sources */ = {isa = PBXBuildFile; fileRef = 631C4FB619D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m */; }; + 631C4FB819D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m in Sources */ = {isa = PBXBuildFile; fileRef = 631C4FB619D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; @@ -1349,12 +1353,23 @@ F04892FF180C3296002FED35 /* ImageOptim.sh in Resources */ = {isa = PBXBuildFile; fileRef = F04892FE180C3296002FED35 /* ImageOptim.sh */; }; F0489300180C3296002FED35 /* ImageOptim.sh in Resources */ = {isa = PBXBuildFile; fileRef = F04892FE180C3296002FED35 /* ImageOptim.sh */; }; F04F1E9D1806A41800D080F2 /* libpolarssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57B0E35F173C010400A476B8 /* libpolarssl.a */; }; + F0642EF119DAC891009DB336 /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F0642EF019DAC891009DB336 /* MainStoryboard.storyboard */; }; + F0642EF219DAC891009DB336 /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F0642EF019DAC891009DB336 /* MainStoryboard.storyboard */; }; F066515517F9A02E0064280C /* UITransparentTVCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F066515417F9A02E0064280C /* UITransparentTVCell.m */; }; F066515617F9A02E0064280C /* UITransparentTVCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F066515417F9A02E0064280C /* UITransparentTVCell.m */; }; F0818E7E17FC51D8005A3330 /* linphone_icon_76.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */; }; F0818E7F17FC51D8005A3330 /* linphone_icon_76.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */; }; F0818E8017FC51D8005A3330 /* linphone_icon_152.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */; }; F0818E8117FC51D8005A3330 /* linphone_icon_152.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */; }; + F08F118519C09C6B007D70C2 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F03A9B3318C0CF7000C4D7FE /* XCTest.framework */; }; + F08F118619C09C6B007D70C2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + F08F118719C09C6B007D70C2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + F08F118D19C09C6B007D70C2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F08F118B19C09C6B007D70C2 /* InfoPlist.strings */; }; + F08F118F19C09C6B007D70C2 /* LinphoneTester_Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = F08F118E19C09C6B007D70C2 /* LinphoneTester_Tests.m */; }; + F08F119919C09D88007D70C2 /* flexisip in Resources */ = {isa = PBXBuildFile; fileRef = F08F119819C09D88007D70C2 /* flexisip */; }; + F08F119A19C09D88007D70C2 /* flexisip in Resources */ = {isa = PBXBuildFile; fileRef = F08F119819C09D88007D70C2 /* flexisip */; }; + F08F119D19C0A65B007D70C2 /* NSObject+DTRuntime.m in Sources */ = {isa = PBXBuildFile; fileRef = F08F119C19C0A65B007D70C2 /* NSObject+DTRuntime.m */; }; + F08F11A019C0A6CB007D70C2 /* DTObjectBlockExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = F08F119F19C0A6CB007D70C2 /* DTObjectBlockExecutor.m */; }; F0938159188E629800A55DFA /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = F0938158188E629800A55DFA /* iTunesArtwork */; }; F093815A188E629800A55DFA /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = F0938158188E629800A55DFA /* iTunesArtwork */; }; F0A2759C18157A6000B6D61A /* linphone_icon_120.png in Resources */ = {isa = PBXBuildFile; fileRef = F0818E7B17FC5160005A3330 /* linphone_icon_120.png */; }; @@ -1417,11 +1432,9 @@ F0BB8C3C19362C2200974404 /* certificates in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C3919362C2200974404 /* certificates */; }; F0BB8C3D19362C2200974404 /* images in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C3A19362C2200974404 /* images */; }; F0BB8C3E19362C2200974404 /* sounds in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C3B19362C2200974404 /* sounds */; }; - F0BB8C44193630CA00974404 /* flexisip.conf in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C3F193630CA00974404 /* flexisip.conf */; }; F0BB8C45193630CA00974404 /* local_tester_hosts in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C40193630CA00974404 /* local_tester_hosts */; }; F0BB8C46193630CA00974404 /* marie_xml in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C41193630CA00974404 /* marie_xml */; }; F0BB8C47193630CA00974404 /* tester_hosts in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C42193630CA00974404 /* tester_hosts */; }; - F0BB8C48193630CA00974404 /* userdb.conf in Resources */ = {isa = PBXBuildFile; fileRef = F0BB8C43193630CA00974404 /* userdb.conf */; }; F0BB8C4C193631D200974404 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; }; F0BB8C4D193631DF00974404 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; @@ -1474,6 +1487,13 @@ remoteGlobalIDString = D2AAC07D0554694100DB518D; remoteInfo = NinePatch; }; + F08F119119C09C6B007D70C2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; + proxyType = 1; + remoteGlobalIDString = F0BB8BD41936208100974404; + remoteInfo = LinphoneTester; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -1631,6 +1651,10 @@ 57F005C315EE2CCF00914747 /* linphonerc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonerc; path = Resources/linphonerc; sourceTree = ""; }; 57F005C615EE2D9200914747 /* linphonerc-factory */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory"; path = "Resources/linphonerc-factory"; sourceTree = ""; }; 57F005C715EE2D9200914747 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory~ipad"; path = "Resources/linphonerc-factory~ipad"; sourceTree = ""; }; + 631C4FAF19D2A8F2004BFE77 /* UIDigitButtonLongPlus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButtonLongPlus.h; sourceTree = ""; }; + 631C4FB019D2A8F2004BFE77 /* UIDigitButtonLongPlus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButtonLongPlus.m; sourceTree = ""; }; + 631C4FB519D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButtonLongVoiceMail.h; sourceTree = ""; }; + 631C4FB619D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButtonLongVoiceMail.m; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = "liblinphone-sdk/apple-darwin/share/linphone/rootca.pem"; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -2260,11 +2284,23 @@ F03CA84118C72F1A0008889D /* UITextViewNoDefine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITextViewNoDefine.h; sourceTree = ""; }; F03CA84218C72F1A0008889D /* UITextViewNoDefine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITextViewNoDefine.m; sourceTree = ""; }; F04892FE180C3296002FED35 /* ImageOptim.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ImageOptim.sh; sourceTree = ""; }; + F0642EF019DAC891009DB336 /* MainStoryboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = MainStoryboard.storyboard; sourceTree = ""; }; + F0642EF719DAF32E009DB336 /* DTWeakSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DTWeakSupport.h; sourceTree = ""; }; F066515317F9A02E0064280C /* UITransparentTVCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITransparentTVCell.h; sourceTree = ""; }; F066515417F9A02E0064280C /* UITransparentTVCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITransparentTVCell.m; sourceTree = ""; }; F0818E7B17FC5160005A3330 /* linphone_icon_120.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_120.png; path = Resources/linphone_icon_120.png; sourceTree = ""; }; F0818E7C17FC51D8005A3330 /* linphone_icon_76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_76.png; path = Resources/linphone_icon_76.png; sourceTree = ""; }; F0818E7D17FC51D8005A3330 /* linphone_icon_152.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_152.png; path = Resources/linphone_icon_152.png; sourceTree = ""; }; + F08F118419C09C6A007D70C2 /* LinphoneTester Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LinphoneTester Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + F08F118A19C09C6B007D70C2 /* LinphoneTester Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "LinphoneTester Tests-Info.plist"; sourceTree = ""; }; + F08F118C19C09C6B007D70C2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + F08F118E19C09C6B007D70C2 /* LinphoneTester_Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LinphoneTester_Tests.m; sourceTree = ""; }; + F08F119019C09C6B007D70C2 /* LinphoneTester Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "LinphoneTester Tests-Prefix.pch"; sourceTree = ""; }; + F08F119819C09D88007D70C2 /* flexisip */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flexisip; path = submodules/linphone/tester/flexisip; sourceTree = SOURCE_ROOT; }; + F08F119B19C0A65A007D70C2 /* NSObject+DTRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+DTRuntime.h"; sourceTree = ""; }; + F08F119C19C0A65B007D70C2 /* NSObject+DTRuntime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+DTRuntime.m"; sourceTree = ""; }; + F08F119E19C0A6CB007D70C2 /* DTObjectBlockExecutor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTObjectBlockExecutor.h; sourceTree = ""; }; + F08F119F19C0A6CB007D70C2 /* DTObjectBlockExecutor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTObjectBlockExecutor.m; sourceTree = ""; }; F0938158188E629800A55DFA /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; path = iTunesArtwork; sourceTree = ""; }; F09548181883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ChatRoomViewController.xib; sourceTree = ""; }; F09548191883F15300E8A69B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ChatViewController.xib; sourceTree = ""; }; @@ -2356,9 +2392,6 @@ F0BB8BEE1936208200974404 /* DetailViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; F0BB8BEF1936208200974404 /* DetailViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; F0BB8BF11936208200974404 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - F0BB8BFF1936208200974404 /* LinphoneTesterTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "LinphoneTesterTests-Info.plist"; sourceTree = ""; }; - F0BB8C011936208200974404 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - F0BB8C031936208200974404 /* LinphoneTesterTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LinphoneTesterTests.m; sourceTree = ""; }; F0BB8C0F193623F200974404 /* liblinphonetester.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphonetester.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphonetester.a"; sourceTree = ""; }; F0BB8C111936240300974404 /* libcunit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcunit.a; path = "liblinphone-sdk/apple-darwin/lib/libcunit.a"; sourceTree = ""; }; F0BB8C311936246600974404 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = System/Library/Frameworks/AudioUnit.framework; sourceTree = SDKROOT; }; @@ -2367,11 +2400,9 @@ F0BB8C3919362C2200974404 /* certificates */ = {isa = PBXFileReference; lastKnownFileType = folder; name = certificates; path = submodules/linphone/tester/certificates; sourceTree = SOURCE_ROOT; }; F0BB8C3A19362C2200974404 /* images */ = {isa = PBXFileReference; lastKnownFileType = folder; name = images; path = submodules/linphone/tester/images; sourceTree = SOURCE_ROOT; }; F0BB8C3B19362C2200974404 /* sounds */ = {isa = PBXFileReference; lastKnownFileType = folder; name = sounds; path = submodules/linphone/tester/sounds; sourceTree = SOURCE_ROOT; }; - F0BB8C3F193630CA00974404 /* flexisip.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = flexisip.conf; path = submodules/linphone/tester/flexisip.conf; sourceTree = SOURCE_ROOT; }; F0BB8C40193630CA00974404 /* local_tester_hosts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = local_tester_hosts; path = submodules/linphone/tester/local_tester_hosts; sourceTree = SOURCE_ROOT; }; F0BB8C41193630CA00974404 /* marie_xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = marie_xml; path = submodules/linphone/tester/marie_xml; sourceTree = SOURCE_ROOT; }; F0BB8C42193630CA00974404 /* tester_hosts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tester_hosts; path = submodules/linphone/tester/tester_hosts; sourceTree = SOURCE_ROOT; }; - F0BB8C43193630CA00974404 /* userdb.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = userdb.conf; path = submodules/linphone/tester/userdb.conf; sourceTree = SOURCE_ROOT; }; F0BB8C4A193631B300974404 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; F84015BC1939FE37006ABAB5 /* test_failed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = test_failed.png; path = Resources/test_failed.png; sourceTree = ""; }; F84015BD1939FE37006ABAB5 /* test_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = test_inprogress.png; path = Resources/test_inprogress.png; sourceTree = ""; }; @@ -2498,6 +2529,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F08F118119C09C6A007D70C2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F08F118519C09C6B007D70C2 /* XCTest.framework in Frameworks */, + F08F118719C09C6B007D70C2 /* UIKit.framework in Frameworks */, + F08F118619C09C6B007D70C2 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F0BB8BD21936208100974404 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2633,6 +2674,7 @@ D38187E015FE348A00C3EDCA /* WizardViewController.xib */, D3D5126E160B3AD400946DF8 /* WizardViewController~ipad.xib */, D3D5126A160B3A8E00946DF8 /* WizardViews.xib */, + F0642EF019DAC891009DB336 /* MainStoryboard.storyboard */, ); path = Classes; sourceTree = ""; @@ -2643,6 +2685,7 @@ 1D6058910D05DD3D006BFB54 /* linphone.app */, 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */, F0BB8BD51936208100974404 /* LinphoneTester.app */, + F08F118419C09C6A007D70C2 /* LinphoneTester Tests.xctest */, ); name = Products; sourceTree = ""; @@ -2688,6 +2731,10 @@ D381881815FE3F7F00C3EDCA /* UIContactDetailsHeader.xib */, 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, + 631C4FAF19D2A8F2004BFE77 /* UIDigitButtonLongPlus.h */, + 631C4FB019D2A8F2004BFE77 /* UIDigitButtonLongPlus.m */, + 631C4FB519D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.h */, + 631C4FB619D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m */, D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */, D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */, 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, @@ -2720,18 +2767,18 @@ D354981E1587716B000081D8 /* UIStateBar.h */, D354981F1587716B000081D8 /* UIStateBar.m */, D35498201587716B000081D8 /* UIStateBar.xib */, + F03CA84118C72F1A0008889D /* UITextViewNoDefine.h */, + F03CA84218C72F1A0008889D /* UITextViewNoDefine.m */, D32648421588F6FA00930C67 /* UIToggleButton.h */, D32648431588F6FB00930C67 /* UIToggleButton.m */, D3196D3C15A32BD7007FEEBA /* UITransferButton.h */, D3196D3D15A32BD8007FEEBA /* UITransferButton.m */, + F066515317F9A02E0064280C /* UITransparentTVCell.h */, + F066515417F9A02E0064280C /* UITransparentTVCell.m */, D32460E4159D9AAD00BA7F3A /* UITransparentView.h */, D32460E5159D9AAD00BA7F3A /* UITransparentView.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, - F066515317F9A02E0064280C /* UITransparentTVCell.h */, - F066515417F9A02E0064280C /* UITransparentTVCell.m */, - F03CA84118C72F1A0008889D /* UITextViewNoDefine.h */, - F03CA84218C72F1A0008889D /* UITextViewNoDefine.m */, ); path = LinphoneUI; sourceTree = ""; @@ -2739,15 +2786,15 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( - F0938158188E629800A55DFA /* iTunesArtwork */, - 2258633C11410BAC00C5A737 /* README */, - F04892FE180C3296002FED35 /* ImageOptim.sh */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97323FDCFA39411CA2CEA /* Frameworks */, + F04892FE180C3296002FED35 /* ImageOptim.sh */, + F0938158188E629800A55DFA /* iTunesArtwork */, F0BB8BD91936208100974404 /* LinphoneTester */, - F0BB8BFD1936208200974404 /* LinphoneTesterTests */, + F08F118819C09C6B007D70C2 /* LinphoneTester Tests */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 19C28FACFE9D520D11CA2CBB /* Products */, + 2258633C11410BAC00C5A737 /* README */, 29B97317FDCFA39411CA2CEA /* Resources */, D398D3031594B0FB00FD553C /* Settings */, ); @@ -2910,6 +2957,7 @@ children = ( D37EE160160377D7003608A6 /* DTActionSheet.h */, D37EE161160377D7003608A6 /* DTActionSheet.m */, + F0642EF719DAF32E009DB336 /* DTWeakSupport.h */, ); name = DTFoundation; path = Utils/DTFoundation; @@ -3038,6 +3086,29 @@ name = UACellBackgroundView; sourceTree = ""; }; + F08F118819C09C6B007D70C2 /* LinphoneTester Tests */ = { + isa = PBXGroup; + children = ( + F08F118E19C09C6B007D70C2 /* LinphoneTester_Tests.m */, + F08F119E19C0A6CB007D70C2 /* DTObjectBlockExecutor.h */, + F08F119F19C0A6CB007D70C2 /* DTObjectBlockExecutor.m */, + F08F119B19C0A65A007D70C2 /* NSObject+DTRuntime.h */, + F08F119C19C0A65B007D70C2 /* NSObject+DTRuntime.m */, + F08F118919C09C6B007D70C2 /* Supporting Files */, + ); + path = "LinphoneTester Tests"; + sourceTree = ""; + }; + F08F118919C09C6B007D70C2 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + F08F118A19C09C6B007D70C2 /* LinphoneTester Tests-Info.plist */, + F08F118B19C09C6B007D70C2 /* InfoPlist.strings */, + F08F119019C09C6B007D70C2 /* LinphoneTester Tests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; F0B89C2318DC90850050B60E /* images */ = { isa = PBXGroup; children = ( @@ -3555,11 +3626,10 @@ F0BB8BDA1936208100974404 /* Supporting Files */ = { isa = PBXGroup; children = ( - F0BB8C3F193630CA00974404 /* flexisip.conf */, + F08F119819C09D88007D70C2 /* flexisip */, F0BB8C40193630CA00974404 /* local_tester_hosts */, F0BB8C41193630CA00974404 /* marie_xml */, F0BB8C42193630CA00974404 /* tester_hosts */, - F0BB8C43193630CA00974404 /* userdb.conf */, F0BB8C3919362C2200974404 /* certificates */, F0BB8C3A19362C2200974404 /* images */, F0BB8C3B19362C2200974404 /* sounds */, @@ -3572,24 +3642,6 @@ name = "Supporting Files"; sourceTree = ""; }; - F0BB8BFD1936208200974404 /* LinphoneTesterTests */ = { - isa = PBXGroup; - children = ( - F0BB8C031936208200974404 /* LinphoneTesterTests.m */, - F0BB8BFE1936208200974404 /* Supporting Files */, - ); - path = LinphoneTesterTests; - sourceTree = ""; - }; - F0BB8BFE1936208200974404 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - F0BB8BFF1936208200974404 /* LinphoneTesterTests-Info.plist */, - F0BB8C001936208200974404 /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -3635,6 +3687,24 @@ productReference = 22D8F187147548E2008C97DB /* linphone-no-gpl-thirdparties.app */; productType = "com.apple.product-type.application"; }; + F08F118319C09C6A007D70C2 /* LinphoneTester Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F08F119319C09C6B007D70C2 /* Build configuration list for PBXNativeTarget "LinphoneTester Tests" */; + buildPhases = ( + F08F118019C09C6A007D70C2 /* Sources */, + F08F118119C09C6A007D70C2 /* Frameworks */, + F08F118219C09C6A007D70C2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F08F119219C09C6B007D70C2 /* PBXTargetDependency */, + ); + name = "LinphoneTester Tests"; + productName = "LinphoneTester Tests"; + productReference = F08F118419C09C6A007D70C2 /* LinphoneTester Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; F0BB8BD41936208100974404 /* LinphoneTester */ = { isa = PBXNativeTarget; buildConfigurationList = F0BB8C051936208200974404 /* Build configuration list for PBXNativeTarget "LinphoneTester" */; @@ -3642,6 +3712,7 @@ F0BB8BD11936208100974404 /* Sources */, F0BB8BD21936208100974404 /* Frameworks */, F0BB8BD31936208100974404 /* Resources */, + F08F11A219C0AC2F007D70C2 /* ShellScript */, ); buildRules = ( ); @@ -3666,6 +3737,10 @@ 22D8F11D147548E2008C97DB = { DevelopmentTeam = Z2V957B3D6; }; + F08F118319C09C6A007D70C2 = { + DevelopmentTeam = Z2V957B3D6; + TestTargetID = F0BB8BD41936208100974404; + }; F0BB8BD41936208100974404 = { DevelopmentTeam = Z2V957B3D6; }; @@ -3702,6 +3777,7 @@ 1D6058900D05DD3D006BFB54 /* linphone */, 22D8F11D147548E2008C97DB /* linphone-no-gpl-thirdparties */, F0BB8BD41936208100974404 /* LinphoneTester */, + F08F118319C09C6A007D70C2 /* LinphoneTester Tests */, ); }; /* End PBXProject section */ @@ -4094,6 +4170,7 @@ D3A74F4215C69392001500B9 /* speaker_on_disabled~ipad.png in Resources */, D3A74F4415C69392001500B9 /* speaker_on_over~ipad.png in Resources */, D3A74F4615C69392001500B9 /* statebar_background_landscape~ipad.png in Resources */, + F0642EF119DAC891009DB336 /* MainStoryboard.storyboard in Resources */, D3A74F4815C69392001500B9 /* statebar_background~ipad.png in Resources */, D3A74F4A15C69392001500B9 /* transfer_call_default~ipad.png in Resources */, D3A74F4C15C69392001500B9 /* transfer_call_over~ipad.png in Resources */, @@ -4640,6 +4717,7 @@ D3A74F4315C69392001500B9 /* speaker_on_disabled~ipad.png in Resources */, D3A74F4515C69392001500B9 /* speaker_on_over~ipad.png in Resources */, D3A74F4715C69392001500B9 /* statebar_background_landscape~ipad.png in Resources */, + F0642EF219DAC891009DB336 /* MainStoryboard.storyboard in Resources */, D3A74F4915C69392001500B9 /* statebar_background~ipad.png in Resources */, D3A74F4B15C69392001500B9 /* transfer_call_default~ipad.png in Resources */, D3A74F4D15C69392001500B9 /* transfer_call_over~ipad.png in Resources */, @@ -4816,16 +4894,24 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F08F118219C09C6A007D70C2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F08F119A19C09D88007D70C2 /* flexisip in Resources */, + F08F118D19C09C6B007D70C2 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F0BB8BD31936208100974404 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F0BB8C3819362C1500974404 /* rcfiles in Resources */, F84015C11939FE37006ABAB5 /* test_passed.png in Resources */, - F0BB8C44193630CA00974404 /* flexisip.conf in Resources */, + F08F119919C09D88007D70C2 /* flexisip in Resources */, F0BB8C46193630CA00974404 /* marie_xml in Resources */, F0BB8BEA1936208200974404 /* Main_iPad.storyboard in Resources */, - F0BB8C48193630CA00974404 /* userdb.conf in Resources */, F0BB8C3E19362C2200974404 /* sounds in Resources */, F84015BF1939FE37006ABAB5 /* test_failed.png in Resources */, F0BB8BF21936208200974404 /* Images.xcassets in Resources */, @@ -4868,6 +4954,19 @@ shellPath = /bin/sh; shellScript = $SRCROOT/ImageOptim.sh; }; + F08F11A219C0AC2F007D70C2 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 12; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"$RUN_UNIT_TEST_WITH_IOS_SIM\" = \"YES\" ]; then\ntest_bundle_path=\"$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION\"\nios-sim launch \"$(dirname \"$TEST_HOST\")\" --setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle=\"$test_bundle_path\" --setenv XCInjectBundleInto=\"$TEST_HOST\" --args -SenTest All \"$test_bundle_path\"\necho \"Finished running tests with ios-sim\"\nelse\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\nfi"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -4879,6 +4978,7 @@ 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */, 22F2508E107141E100AC9B3F /* DialerViewController.m in Sources */, 22E0A822111C44E100B04932 /* AboutViewController.m in Sources */, + 631C4FB119D2A8F2004BFE77 /* UIDigitButtonLongPlus.m in Sources */, 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */, 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */, 2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */, @@ -4951,6 +5051,7 @@ D3807FF615C2894A005BE9BC /* IASKSpecifier.m in Sources */, D3807FF815C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */, D3807FFA15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + 631C4FB719D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m in Sources */, D3807FFC15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */, D3807FFE15C2894A005BE9BC /* IASKSlider.m in Sources */, D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */, @@ -4978,6 +5079,7 @@ 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */, 22D8F146147548E2008C97DB /* DialerViewController.m in Sources */, 22D8F14A147548E2008C97DB /* AboutViewController.m in Sources */, + 631C4FB219D2A8F2004BFE77 /* UIDigitButtonLongPlus.m in Sources */, 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */, 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */, 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */, @@ -5050,6 +5152,7 @@ D3807FF715C2894A005BE9BC /* IASKSpecifier.m in Sources */, D3807FF915C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */, D3807FFB15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + 631C4FB819D2C3A6004BFE77 /* UIDigitButtonLongVoiceMail.m in Sources */, D3807FFD15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */, D3807FFF15C2894A005BE9BC /* IASKSlider.m in Sources */, D380800115C2894A005BE9BC /* IASKSwitch.m in Sources */, @@ -5069,6 +5172,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F08F118019C09C6A007D70C2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F08F119D19C0A65B007D70C2 /* NSObject+DTRuntime.m in Sources */, + F08F118F19C09C6B007D70C2 /* LinphoneTester_Tests.m in Sources */, + F08F11A019C0A6CB007D70C2 /* DTObjectBlockExecutor.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F0BB8BD11936208100974404 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5104,6 +5217,11 @@ name = NinePatch; targetProxy = D3B90E1C15C2CBCD00F64F8C /* PBXContainerItemProxy */; }; + F08F119219C09C6B007D70C2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F0BB8BD41936208100974404 /* LinphoneTester */; + targetProxy = F08F119119C09C6B007D70C2 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -5367,6 +5485,14 @@ name = "IncomingCallViewController~ipad.xib"; sourceTree = ""; }; + F08F118B19C09C6B007D70C2 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + F08F118C19C09C6B007D70C2 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; F0BB8BDC1936208100974404 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( @@ -5391,14 +5517,6 @@ name = Main_iPad.storyboard; sourceTree = ""; }; - F0BB8C001936208200974404 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - F0BB8C011936208200974404 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -5442,9 +5560,10 @@ ORDER_FILE = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = linphone; - PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE = "384d6da1-05db-4d21-ba10-ec946478a862"; SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; + WARNING_CFLAGS = "-Werror=objc-method-access"; }; name = Debug; }; @@ -5510,9 +5629,10 @@ ORDER_FILE = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = linphone; - PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE = "3732314a-627f-40fe-a089-235a74464861"; SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; + WARNING_CFLAGS = "-Werror=objc-method-access"; }; name = DistributionAdhoc; }; @@ -5735,9 +5855,10 @@ ORDER_FILE = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = linphone; - PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE = "b9cdf249-07ad-4301-af2d-b3867137d57b"; SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; + WARNING_CFLAGS = "-Werror=objc-method-access"; }; name = Release; }; @@ -5803,9 +5924,10 @@ ORDER_FILE = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = linphone; - PROVISIONING_PROFILE = ""; + PROVISIONING_PROFILE = "b9cdf249-07ad-4301-af2d-b3867137d57b"; SKIP_INSTALL = NO; TARGETED_DEVICE_FAMILY = "1,2"; + WARNING_CFLAGS = "-Werror=objc-method-access"; }; name = Distribution; }; @@ -5833,6 +5955,212 @@ }; name = Debug; }; + F08F119419C09C6B007D70C2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/LinphoneTester.app/LinphoneTester"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "LinphoneTester Tests/LinphoneTester Tests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + HEADER_SEARCH_PATHS = ( + "liblinphone-sdk/apple-darwin/include", + Classes/Utils/NinePatch/, + Classes/Utils/XMLRPC/, + ); + INFOPLIST_FILE = "LinphoneTester Tests/LinphoneTester Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", + ); + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + F08F119519C09C6B007D70C2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/LinphoneTester.app/LinphoneTester"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "LinphoneTester Tests/LinphoneTester Tests-Prefix.pch"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + HEADER_SEARCH_PATHS = ( + "liblinphone-sdk/apple-darwin/include", + Classes/Utils/NinePatch/, + Classes/Utils/XMLRPC/, + ); + INFOPLIST_FILE = "LinphoneTester Tests/LinphoneTester Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + TEST_HOST = "$(BUNDLE_LOADER)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; + F08F119619C09C6B007D70C2 /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/LinphoneTester.app/LinphoneTester"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "LinphoneTester Tests/LinphoneTester Tests-Prefix.pch"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + HEADER_SEARCH_PATHS = ( + "liblinphone-sdk/apple-darwin/include", + Classes/Utils/NinePatch/, + Classes/Utils/XMLRPC/, + ); + INFOPLIST_FILE = "LinphoneTester Tests/LinphoneTester Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + TEST_HOST = "$(BUNDLE_LOADER)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = xctest; + }; + name = Distribution; + }; + F08F119719C09C6B007D70C2 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/LinphoneTester.app/LinphoneTester"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "LinphoneTester Tests/LinphoneTester Tests-Prefix.pch"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + HEADER_SEARCH_PATHS = ( + "liblinphone-sdk/apple-darwin/include", + Classes/Utils/NinePatch/, + Classes/Utils/XMLRPC/, + ); + INFOPLIST_FILE = "LinphoneTester Tests/LinphoneTester Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", + "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + TEST_HOST = "$(BUNDLE_LOADER)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = xctest; + }; + name = DistributionAdhoc; + }; F0BB8C061936208200974404 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5850,6 +6178,10 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -5871,7 +6203,7 @@ Classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "LinphoneTester/LinphoneTester-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", @@ -5879,7 +6211,7 @@ ); ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "72278EC2-F54D-4717-86AD-08D6E2AEC22B"; + PROVISIONING_PROFILE = "b16cf102-d1d6-44ea-80ce-ef7337931580"; WRAPPER_EXTENSION = app; }; name = Debug; @@ -5902,6 +6234,10 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "LinphoneTester/LinphoneTester-Prefix.pch"; @@ -5916,14 +6252,14 @@ Classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "LinphoneTester/LinphoneTester-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", ); PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "72278EC2-F54D-4717-86AD-08D6E2AEC22B"; + PROVISIONING_PROFILE = "b16cf102-d1d6-44ea-80ce-ef7337931580"; VALIDATE_PRODUCT = YES; WRAPPER_EXTENSION = app; }; @@ -5947,6 +6283,10 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "LinphoneTester/LinphoneTester-Prefix.pch"; @@ -5961,14 +6301,14 @@ Classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "LinphoneTester/LinphoneTester-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", ); PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "72278EC2-F54D-4717-86AD-08D6E2AEC22B"; + PROVISIONING_PROFILE = "b16cf102-d1d6-44ea-80ce-ef7337931580"; VALIDATE_PRODUCT = YES; WRAPPER_EXTENSION = app; }; @@ -5992,6 +6332,10 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "LinphoneTester/LinphoneTester-Prefix.pch"; @@ -6006,14 +6350,14 @@ Classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "LinphoneTester/LinphoneTester-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib", "$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins", ); PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "72278EC2-F54D-4717-86AD-08D6E2AEC22B"; + PROVISIONING_PROFILE = "b16cf102-d1d6-44ea-80ce-ef7337931580"; VALIDATE_PRODUCT = YES; WRAPPER_EXTENSION = app; }; @@ -6055,6 +6399,17 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + F08F119319C09C6B007D70C2 /* Build configuration list for PBXNativeTarget "LinphoneTester Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F08F119419C09C6B007D70C2 /* Debug */, + F08F119519C09C6B007D70C2 /* Release */, + F08F119619C09C6B007D70C2 /* Distribution */, + F08F119719C09C6B007D70C2 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; F0BB8C051936208200974404 /* Build configuration list for PBXNativeTarget "LinphoneTester" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme b/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme new file mode 100644 index 000000000..00754381c --- /dev/null +++ b/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linphone.xcodeproj/xcshareddata/xcschemes/linphone.xcscheme b/linphone.xcodeproj/xcshareddata/xcschemes/linphone.xcscheme new file mode 100644 index 000000000..69fececb1 --- /dev/null +++ b/linphone.xcodeproj/xcshareddata/xcschemes/linphone.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main.m b/main.m index 878eadce7..26996ff51 100644 --- a/main.m +++ b/main.m @@ -18,6 +18,7 @@ */ #import +#import "LinphoneAppDelegate.h" #ifdef DEBUG @@ -35,7 +36,7 @@ int main(int argc, char *argv[]) { NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); #endif NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, nil); + int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([LinphoneAppDelegate class])); [pool release]; return retVal; } diff --git a/submodules/belle-sip b/submodules/belle-sip index ee99cb136..eee5149dd 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit ee99cb136b23558faadab3b0c654561f4a92e371 +Subproject commit eee5149dde1ab04249e8d3d83676fa15d0ef78b6 diff --git a/submodules/build/Makefile b/submodules/build/Makefile index ddd81d4e9..e3087adb3 100644 --- a/submodules/build/Makefile +++ b/submodules/build/Makefile @@ -1,5 +1,5 @@ ############################################################################ -# Makefile +# Makefile # Copyright (C) 2009 Belledonne Communications,Grenoble France # ############################################################################ @@ -56,7 +56,7 @@ endif ifeq ($(enable_gpl_third_parties),yes) warning: - @echo + @echo @echo "***************************************************************************" @echo "***************************************************************************" @echo "*****CAUTION, this liblinphone SDK is built using 3rd party GPL code ******" @@ -68,7 +68,7 @@ warning: @echo "***************************************************************************" else warning: - @echo + @echo @echo "*****************************************************************" @echo "*****************************************************************" @echo "*****Linphone SDK without 3rd party GPL software ******" @@ -84,17 +84,17 @@ LINPHONE_OPTIONS=enable_gpl_third_parties=$(enable_gpl_third_parties) \ enable_debug=$(enable_debug) enable_ffmpeg=$(enable_ffmpeg) enable_tunnel=$(enable_tunnel) -armv7-%: +armv7-%: make -f builder-iphone-os.mk $(LINPHONE_OPTIONS) $* -armv7s-%: +armv7s-%: make -f builder-iphone-os.mk host=armv7s-apple-darwin $(LINPHONE_OPTIONS) $* -simu-%: +simu-%: make -f builder-iphone-simulator.mk $(LINPHONE_OPTIONS) $* -build-% clean-% veryclean-%: +build-% clean-% veryclean-%: make -f builder-iphone-simulator.mk $(LINPHONE_OPTIONS) $@ \ && make -f builder-iphone-os.mk $(LINPHONE_OPTIONS) $@ \ && make -f builder-iphone-os.mk host=armv7s-apple-darwin $(LINPHONE_OPTIONS) $@ @@ -106,8 +106,11 @@ broadcast_%: && make -f builder-iphone-os.mk $(LINPHONE_OPTIONS) $* \ && make -f builder-iphone-os.mk host=armv7s-apple-darwin $(LINPHONE_OPTIONS) $* -sdk: - make -f builder-iphone-os.mk delivery-sdk +sdk: + make -f builder-iphone-os.mk delivery-sdk + +download-sdk: + make -f builder-iphone-os.mk download-sdk build: broadcast_all sdk @@ -119,7 +122,7 @@ veryclean: broadcast_veryclean zipres: - @tar -C ../.. -czf ../../ios_assets.tar.gz Resources iTunesArtwork + @tar -C ../.. -czf ../../ios_assets.tar.gz Resources iTunesArtwork @echo Archive 'ios_assets.tar.gz' placed in root directory help: diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk index 066387b54..c0288a954 100644 --- a/submodules/build/builder-iphone-os.mk +++ b/submodules/build/builder-iphone-os.mk @@ -1,5 +1,5 @@ ############################################################################ -# builder-generic.mk +# builder-generic.mk # Copyright (C) 2009 Belledonne Communications,Grenoble France # ############################################################################ @@ -19,7 +19,7 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################ - + host?=armv7-apple-darwin config_site:=iphone-config.site library_mode:= --disable-shared --enable-static @@ -40,7 +40,7 @@ linphone_configure_controls = \ --disable-tools \ --enable-msg-storage=yes - + #path BUILDER_SRC_DIR?=$(shell pwd)/../ ifeq ($(enable_debug),yes) @@ -82,19 +82,19 @@ else SWITCHES += disable_tunnel endif -ifeq ($(enable_gpl_third_parties),yes) +ifeq ($(enable_gpl_third_parties),yes) SWITCHES+= enable_gpl_third_parties - + ifeq ($(enable_ffmpeg), yes) - linphone_configure_controls+= --enable-ffmpeg + linphone_configure_controls+= --enable-ffmpeg SWITCHES += enable_ffmpeg else - linphone_configure_controls+= --disable-ffmpeg + linphone_configure_controls+= --disable-ffmpeg SWITCHES += disable_ffmpeg endif else # !enable gpl - linphone_configure_controls+= --disable-ffmpeg + linphone_configure_controls+= --disable-ffmpeg SWITCHES += disable_gpl_third_parties disable_ffmpeg endif @@ -107,12 +107,10 @@ $(LINPHONE_BUILD_DIR)/enable_% $(LINPHONE_BUILD_DIR)/disable_%: mkdir -p $(LINPHONE_BUILD_DIR) cd $(LINPHONE_BUILD_DIR) && rm -f *able_$* touch $@ - cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile + cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile # end of switches parsing -osip_dir=externals/osip -eXosip_dir=externals/exosip speex_dir=externals/speex gsm_dir=externals/gsm @@ -124,12 +122,12 @@ LIBILBC_BUILD_DIR:=$(BUILDER_BUILD_DIR)/libilbc-rfc3951 ifneq (,$(findstring arm,$(host))) #SPEEX_CONFIGURE_OPTION := --enable-fixed-point --disable-float-api - CFLAGS := $(CFLAGS) -marm + CFLAGS := $(CFLAGS) -marm SPEEX_CONFIGURE_OPTION := --disable-float-api --enable-arm5e-asm --enable-fixed-point endif ifneq (,$(findstring armv7,$(host))) - SPEEX_CONFIGURE_OPTION += --enable-armv7neon-asm + SPEEX_CONFIGURE_OPTION += --enable-armv7neon-asm endif clean-makefile: clean-makefile-linphone clean-makefile-msbcg729 @@ -143,7 +141,7 @@ veryclean: veryclean-linphone veryclean-msbcg729 # list of the submodules to build, the order is important MS_MODULES := msilbc libilbc msamr mssilk msx264 mswebrtc msopenh264 -SUBMODULES_LIST := polarssl +SUBMODULES_LIST := polarssl ifeq ($(enable_tunnel),yes) SUBMODULES_LIST += tunnel @@ -178,16 +176,16 @@ $(LINPHONE_BUILD_DIR)/Makefile: $(LINPHONE_SRC_DIR)/configure PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) \ $(LINPHONE_SRC_DIR)/configure -prefix=$(prefix) --host=$(host) ${library_mode} \ ${linphone_configure_controls} - + #libphone only (asume dependencies are met) -build-liblinphone: $(LINPHONE_BUILD_DIR)/Makefile +build-liblinphone: $(LINPHONE_BUILD_DIR)/Makefile cd $(LINPHONE_BUILD_DIR) && export PKG_CONFIG_LIBDIR=$(prefix)/lib/pkgconfig export CONFIG_SITE=$(BUILDER_SRC_DIR)/build/$(config_site) make newdate && make && make install -clean-makefile-liblinphone: - cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile - -clean-liblinphone: +clean-makefile-liblinphone: + cd $(LINPHONE_BUILD_DIR) && rm -f Makefile && rm -f oRTP/Makefile && rm -f mediastreamer2/Makefile + +clean-liblinphone: cd $(LINPHONE_BUILD_DIR) && make clean #speex @@ -219,6 +217,7 @@ clean-makefile-speex: build-libgsm: cp -rf $(BUILDER_SRC_DIR)/$(gsm_dir) $(BUILDER_BUILD_DIR)/$(gsm_dir) + rm -rf $(BUILDER_BUILD_DIR)/$(gsm_dir)/.git rm -f $(prefix)/lib/libgsm.a rm -rf $(prefix)/include/gsm cd $(BUILDER_BUILD_DIR)/$(gsm_dir)\ @@ -230,7 +229,7 @@ clean-libgsm: cd $(BUILDER_BUILD_DIR)/$(gsm_dir)\ && make clean -veryclean-libgsm: +veryclean-libgsm: -cd $(BUILDER_BUILD_DIR)/$(gsm_dir) \ && make uninstall @@ -327,14 +326,22 @@ delivery-sdk: multi-arch liblinphone-tutorials \ -x liblinphone-tutorials/hello-world/build\* \ -x liblinphone-tutorials/hello-world/hello-world.xcodeproj/*.pbxuser \ - -x liblinphone-tutorials/hello-world/hello-world.xcodeproj/*.mode1v3 + -x liblinphone-tutorials/hello-world/hello-world.xcodeproj/*.mode1v3 + +download-sdk: + cd $(BUILDER_SRC_DIR)/../ + rm -fr liblinphone-iphone-sdk-latest* + wget http://linphone.org/snapshots/ios/liblinphone-iphone-sdk-latest.zip + unzip -o -q liblinphone-iphone-sdk-latest.zip + rm -fr ../../liblinphone-sdk/ + mv liblinphone-sdk ../.. .PHONY delivery: cd $(BUILDER_SRC_DIR)/../../ \ && zip -r $(BUILDER_SRC_DIR)/linphone-iphone.zip \ linphone-iphone \ -x linphone-iphone/build\* \ - --exclude linphone-iphone/.git\* --exclude \*.[od] --exclude \*.so.\* --exclude \*.a --exclude linphone-iphone/liblinphone-sdk/apple-darwin/\* --exclude \*.lo + --exclude linphone-iphone/.git\* --exclude \*.[od] --exclude \*.so.\* --exclude \*.a --exclude linphone-iphone/liblinphone-sdk/apple-darwin/\* --exclude \*.lo ipa: cd $(BUILDER_SRC_DIR)/../ \ diff --git a/submodules/build/builders.d/opus.mk b/submodules/build/builders.d/opus.mk index f0e6dcf32..54d816d22 100644 --- a/submodules/build/builders.d/opus.mk +++ b/submodules/build/builders.d/opus.mk @@ -24,10 +24,10 @@ enable_opus?=yes libopus_configure_options=--disable-extra-programs --disable-doc ifneq (,$(findstring armv7,$(host))) - libopus_configure_options+= --enable-fixed-point --disable-asm + libopus_configure_options+= --enable-fixed-point endif ifneq (,$(findstring armv7s,$(host))) - libopus_configure_options+= --enable-fixed-point --disable-asm + libopus_configure_options+= --enable-fixed-point endif $(BUILDER_SRC_DIR)/$(opus_dir)/configure: diff --git a/submodules/build/builders.d/x264.patch b/submodules/build/builders.d/x264.patch index 60ffc6701..62bd0789e 100644 --- a/submodules/build/builders.d/x264.patch +++ b/submodules/build/builders.d/x264.patch @@ -134,3 +134,16 @@ index e851562..c159f9e 100644 movlt r0, #0 bx lr .endfunc +diff --git a/configure b/configure +index 250b0ac..af69d44 100755 +--- a/configure ++++ b/configure +@@ -456,7 +456,7 @@ case $host_os in + ;; + darwin*) + SYS="MACOSX" +- CFLAGS="$CFLAGS -falign-loops=16" ++ CFLAGS="$CFLAGS" + libm="-lm" + if [ "$pic" = "no" ]; then + cc_check "" -mdynamic-no-pic && CFLAGS="$CFLAGS -mdynamic-no-pic" diff --git a/submodules/build/iphone-config.site b/submodules/build/iphone-config.site index 995023e4a..c62de78fe 100644 --- a/submodules/build/iphone-config.site +++ b/submodules/build/iphone-config.site @@ -1,7 +1,7 @@ # -*- shell-script -*- -SDK_VERSION_MAJOR=4 -SDK_VERSION=4.0 +SDK_VERSION_MAJOR=5 +SDK_VERSION=5.0 MCPU="" CLANG_TARGET_SPECIFIER=miphoneos-version-min if test "${host_alias}" = "i386-apple-darwin" ; then diff --git a/submodules/bzrtp b/submodules/bzrtp index 8ceda7ef0..0948658db 160000 --- a/submodules/bzrtp +++ b/submodules/bzrtp @@ -1 +1 @@ -Subproject commit 8ceda7ef0d35130057affc2e5a61c0667cde15aa +Subproject commit 0948658db85a7c9933ed2d39a159239d9ee5c734 diff --git a/submodules/externals/antlr3 b/submodules/externals/antlr3 index 20985f63c..489f375fb 160000 --- a/submodules/externals/antlr3 +++ b/submodules/externals/antlr3 @@ -1 +1 @@ -Subproject commit 20985f63cb691f7ea0bdf9ccf7d5cbfda055e060 +Subproject commit 489f375fb391cb70d82b56f509c39cbf7fa0b706 diff --git a/submodules/externals/opus b/submodules/externals/opus index fcecd29ab..da97db1ca 160000 --- a/submodules/externals/opus +++ b/submodules/externals/opus @@ -1 +1 @@ -Subproject commit fcecd29abf32164326e568acdcdf7d8e877b33b1 +Subproject commit da97db1ca1f92592af3534c9a2596da0e9a009ca diff --git a/submodules/externals/polarssl b/submodules/externals/polarssl index e9f7b4487..deb4df478 160000 --- a/submodules/externals/polarssl +++ b/submodules/externals/polarssl @@ -1 +1 @@ -Subproject commit e9f7b4487464909a786b156b149de7769d1df3a2 +Subproject commit deb4df4789494ecbfd55926ec3e03e2f736899c5 diff --git a/submodules/linphone b/submodules/linphone index 3c32fd439..2479a567a 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 3c32fd43972ad9560f33e1f056ad7be694d8e685 +Subproject commit 2479a567a5a49a7a63406b3b1bf3f7a536a03d54 diff --git a/submodules/msopenh264 b/submodules/msopenh264 index 7a8738cd1..e60a95bfa 160000 --- a/submodules/msopenh264 +++ b/submodules/msopenh264 @@ -1 +1 @@ -Subproject commit 7a8738cd1f034222f83ffa3be8a411319b1a37fa +Subproject commit e60a95bfa38019635607b14964e2a3c1ee067248 diff --git a/submodules/msx264 b/submodules/msx264 index ee2a0f6f0..05b55211c 160000 --- a/submodules/msx264 +++ b/submodules/msx264 @@ -1 +1 @@ -Subproject commit ee2a0f6f0904995177434292a7a0fb4c51632e4e +Subproject commit 05b55211c6fe7eebef485a00a60c66cbe1394907