From ec2a7a68567f0ee237fafbeeca4f529868709bda Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 10 Aug 2012 13:21:14 +0200 Subject: [PATCH] Don't use anymore shouldAutorotateToInterfaceOrientation: Private interface rotation Fix adjustToFit in dialer view --- Classes/DialerViewController.m | 2 + Classes/DialerViewController.xib | 2 +- Classes/DialerViewController~ipad.xib | 2 - Classes/LinphoneUI/UIAddressTextField.m | 2 +- .../LinphoneUI/UICompositeViewController.m | 76 +++++++++++-------- Classes/LinphoneUI/UIDigitButton.m | 3 +- Classes/PhoneMainView.m | 8 +- 7 files changed, 52 insertions(+), 43 deletions(-) diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index a37075a8e..225be3f20 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -156,6 +156,8 @@ static UICompositeViewDescription *compositeDescription = nil; [nineButton setDigit:'9']; [starButton setDigit:'*']; [sharpButton setDigit:'#']; + + [addressField setAdjustsFontSizeToFitWidth:TRUE]; // Not put it in IB: issue with placeholder size } #pragma mark - Event Functions diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index d2f01509d..68299157f 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -82,7 +82,6 @@ 3 MQA - YES 15 1 @@ -606,6 +605,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework diff --git a/Classes/DialerViewController~ipad.xib b/Classes/DialerViewController~ipad.xib index d8f7b2398..9e9abaae9 100644 --- a/Classes/DialerViewController~ipad.xib +++ b/Classes/DialerViewController~ipad.xib @@ -77,7 +77,6 @@ 3 MQA - YES 15 1 @@ -603,7 +602,6 @@ {{126, 0}, {186, 85}} - _NS:9 NO IBIPadFramework diff --git a/Classes/LinphoneUI/UIAddressTextField.m b/Classes/LinphoneUI/UIAddressTextField.m index 0e6b316e1..aefc0cf8b 100644 --- a/Classes/LinphoneUI/UIAddressTextField.m +++ b/Classes/LinphoneUI/UIAddressTextField.m @@ -21,7 +21,7 @@ @implementation UIAddressTextField -- (void) setText:(NSString *)text { +- (void)setText:(NSString *)text { [super setText:text]; [self sendActionsForControlEvents:UIControlEventEditingChanged]; } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index e81aca9be..a57ff28b9 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -180,6 +180,11 @@ [self.contentViewController viewWillAppear:animated]; [self.tabBarViewController viewWillAppear:animated]; [self.stateBarViewController viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationDidChange:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; } @@ -197,6 +202,10 @@ [self.stateBarViewController viewWillDisappear:animated]; [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewDidDisappear:(BOOL)animated { @@ -207,18 +216,18 @@ } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - currentOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; - [super willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [self.contentViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [self.tabBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [self.stateBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + currentOrientation = toInterfaceOrientation; + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.contentViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.tabBarViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.stateBarViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [super willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self.contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self.tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self.stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.contentViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.tabBarViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.stateBarViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; [self update:nil tabBar:nil stateBar:nil fullscreen:nil]; } @@ -230,23 +239,24 @@ } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil) { - NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; - if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode] && - ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"portrait"])) { - return YES; - } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode] && - ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"landscape"])) { - return YES; - } - return NO; - } - return YES; + if(interfaceOrientation == currentOrientation) + return YES; + return NO; } -#pragma mark - +#pragma mark - Event Functions + +- (void)orientationDidChange:(NSNotification*)notif { + // Update rotation + UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; + if(currentOrientation != correctOrientation) { + [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; + } +} + + +#pragma mark - - (void)clearCache { [viewControllerCache removeAllObjects]; @@ -295,10 +305,19 @@ - (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIDeviceOrientation)deviceOrientation { if(currentViewDescription != nil) { + // If unknown return status bar orientation + if(deviceOrientation == UIDeviceOrientationUnknown && currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; if([rotationPreference isEqualToString:@"auto"]) { - if(deviceOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; + // Don't rotate in UIDeviceOrientationFaceUp UIDeviceOrientationFaceDown + if(!UIDeviceOrientationIsPortrait(deviceOrientation) && !UIDeviceOrientationIsLandscape(deviceOrientation)) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return currentOrientation; } if (UIDeviceOrientationIsPortrait(deviceOrientation)) { if ([currentViewDescription portraitMode]) { @@ -317,9 +336,6 @@ } else if([rotationPreference isEqualToString:@"portrait"]) { if ([currentViewDescription portraitMode]) { if (UIDeviceOrientationIsPortrait(deviceOrientation)) { - if(deviceOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; - } return deviceOrientation; } else { if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { @@ -334,9 +350,6 @@ } else if([rotationPreference isEqualToString:@"landscape"]) { if ([currentViewDescription landscapeMode]) { if (UIDeviceOrientationIsLandscape(deviceOrientation)) { - if(deviceOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; - } return deviceOrientation; } else { if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { @@ -427,7 +440,6 @@ UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; if(currentOrientation != correctOrientation) { [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; - currentOrientation = correctOrientation; } else { [self updateInterfaceOrientation:correctOrientation]; } diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index 7dcd33429..dcafad7b6 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -75,7 +75,7 @@ } if (addressField && (!dtmf || !linphone_core_in_call([LinphoneManager getLc]))) { NSString* newAddress = [NSString stringWithFormat:@"%@%c",addressField.text, digit]; - [addressField setText:newAddress]; + [addressField setText:newAddress]; linphone_core_play_dtmf([LinphoneManager getLc], digit, -1); } else { linphone_core_send_dtmf([LinphoneManager getLc], digit); @@ -101,7 +101,6 @@ if (digit == '0') { NSString* newAddress = [[addressField.text substringToIndex: [addressField.text length]-1] stringByAppendingString:@"+"]; [addressField setText:newAddress]; - [addressField sendActionsForControlEvents:UIControlEventEditingChanged]; } } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index c40c8aa1a..2f6667caa 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -164,11 +164,9 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(mainViewController != nil) { - return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; - } else { + if(interfaceOrientation == self.interfaceOrientation) return YES; - } + return NO; } /* @@ -219,7 +217,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } [controller didRotateFromInterfaceOrientation:oldOrientation]; } - [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:TRUE]; + [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:animated]; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {