From 0ea18d3662493637f74be41f56b0fff7e95867a1 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Wed, 25 Nov 2015 12:02:30 +0100 Subject: [PATCH] Settings: improve UI a bit --- Classes/Base.lproj/AboutView.xib | 2 +- Classes/Base.lproj/HistoryDetailsView.xib | 169 ++++++++++++++++++++-- Classes/Base.lproj/SettingsView.xib | 28 +++- Classes/HistoryDetailsView.h | 2 +- Classes/SettingsView.h | 4 + Classes/SettingsView.m | 45 +++--- 6 files changed, 207 insertions(+), 43 deletions(-) diff --git a/Classes/Base.lproj/AboutView.xib b/Classes/Base.lproj/AboutView.xib index fa0f7623e..8ea48f462 100644 --- a/Classes/Base.lproj/AboutView.xib +++ b/Classes/Base.lproj/AboutView.xib @@ -25,7 +25,7 @@ - + diff --git a/Classes/Base.lproj/HistoryDetailsView.xib b/Classes/Base.lproj/HistoryDetailsView.xib index 2807dae03..f28a5512e 100644 --- a/Classes/Base.lproj/HistoryDetailsView.xib +++ b/Classes/Base.lproj/HistoryDetailsView.xib @@ -12,6 +12,8 @@ + + @@ -21,20 +23,20 @@ - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Classes/Base.lproj/SettingsView.xib b/Classes/Base.lproj/SettingsView.xib index efe003777..c546c6e89 100644 --- a/Classes/Base.lproj/SettingsView.xib +++ b/Classes/Base.lproj/SettingsView.xib @@ -8,9 +8,11 @@ + + @@ -25,7 +27,7 @@ - + @@ -55,12 +57,27 @@ + - + @@ -74,9 +91,10 @@ - + - + + @@ -88,6 +106,8 @@ + + diff --git a/Classes/HistoryDetailsView.h b/Classes/HistoryDetailsView.h index 78d849367..3ae2801b9 100644 --- a/Classes/HistoryDetailsView.h +++ b/Classes/HistoryDetailsView.h @@ -25,7 +25,7 @@ #import "HistoryDetailsTableView.h" #import "UIRoundedImageView.h" -@interface HistoryDetailsView : UIViewController { +@interface HistoryDetailsView : TPMultiLayoutViewController { @private LinphoneCallLog *callLog; } diff --git a/Classes/SettingsView.h b/Classes/SettingsView.h index e82131036..ebadd2576 100644 --- a/Classes/SettingsView.h +++ b/Classes/SettingsView.h @@ -32,6 +32,10 @@ @property(nonatomic, strong) IBOutlet UINavigationController *navigationController; @property(nonatomic, strong) IBOutlet IASKAppSettingsViewController *settingsController; @property(weak, nonatomic) IBOutlet UIView *subView; +@property(weak, nonatomic) IBOutlet UIButton *backButton; +@property(weak, nonatomic) IBOutlet UILabel *titleLabel; + - (IBAction)onDialerBackClick:(id)sender; +- (IBAction)onBackClick:(id)sender; @end diff --git a/Classes/SettingsView.m b/Classes/SettingsView.m index 29b390db8..be5833296 100644 --- a/Classes/SettingsView.m +++ b/Classes/SettingsView.m @@ -395,8 +395,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Sync settings with linphone core settings [settingsStore transformLinphoneCoreToKeys]; - _settingsController.hiddenKeys = [self findHiddenKeys]; - [_settingsController.tableView reloadData]; + [self recomputeAccountLabelsAndSync]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self @@ -642,26 +641,34 @@ static UICompositeViewDescription *compositeDescription = nil; return hiddenKeys; } +- (void)recomputeAccountLabelsAndSync { + // it's a bit violent... but IASK is not designed to dynamically change subviews' name + _settingsController.hiddenKeys = [self findHiddenKeys]; + [_settingsController.settingsReader indexPathForKey:@"account_1_menu"]; // force refresh username' + [_settingsController.settingsReader indexPathForKey:@"account_2_menu"]; // force refresh username' + [_settingsController.settingsReader indexPathForKey:@"account_3_menu"]; // force refresh username' + [_settingsController.settingsReader indexPathForKey:@"account_4_menu"]; // force refresh username' + [_settingsController.settingsReader indexPathForKey:@"account_5_menu"]; // force refresh username' + [[_settingsController tableView] reloadData]; +} + #pragma mark - IASKSettingsDelegate Functions - (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { } - (void)settingsViewControllerWillAppear:(IASKAppSettingsViewController *)sender { - // going to account: fill info + _backButton.hidden = (sender.file == nil || [sender.file isEqualToString:@"Root"]); + _titleLabel.text = sender.title; + + // going to account: fill account specific info if ([sender.file isEqualToString:@"Account"]) { LOGI(@"Going editting account %@", sender.title); [settingsStore transformAccountToKeys:sender.title]; // coming back to default: if we were in account, we must synchronize account now } else if ([sender.file isEqualToString:@"Root"]) { [settingsStore synchronize]; - // it's a bit violent... but IASK is not designed to dynamically change subviews' name - [_settingsController.settingsReader indexPathForKey:@"account_1_menu"]; // force refresh username' - [_settingsController.settingsReader indexPathForKey:@"account_2_menu"]; // force refresh username' - [_settingsController.settingsReader indexPathForKey:@"account_3_menu"]; // force refresh username' - [_settingsController.settingsReader indexPathForKey:@"account_4_menu"]; // force refresh username' - [_settingsController.settingsReader indexPathForKey:@"account_5_menu"]; // force refresh username' - [[_settingsController tableView] reloadData]; + [self recomputeAccountLabelsAndSync]; } } @@ -709,17 +716,7 @@ static UICompositeViewDescription *compositeDescription = nil; [alert addButtonWithTitle:NSLocalizedString(@"Yes", nil) block:^{ [settingsStore removeAccount]; - _settingsController.hiddenKeys = [self findHiddenKeys]; - [_settingsController.settingsReader - indexPathForKey:@"account_1_menu"]; // force refresh username' - [_settingsController.settingsReader - indexPathForKey:@"account_2_menu"]; // force refresh username' - [_settingsController.settingsReader - indexPathForKey:@"account_3_menu"]; // force refresh username' - [_settingsController.settingsReader - indexPathForKey:@"account_4_menu"]; // force refresh username' - [_settingsController.settingsReader - indexPathForKey:@"account_5_menu"]; // force refresh username' + [self recomputeAccountLabelsAndSync]; [_settingsController.navigationController popViewControllerAnimated:NO]; }]; [alert show]; @@ -847,9 +844,13 @@ static UICompositeViewDescription *compositeDescription = nil; } - (IBAction)onDialerBackClick:(id)sender { - [settingsStore synchronize]; + [_settingsController.navigationController popViewControllerAnimated:NO]; DialerView *view = VIEW(DialerView); [PhoneMainView.instance changeCurrentView:view.compositeViewDescription]; } + +- (IBAction)onBackClick:(id)sender { + [_settingsController.navigationController popViewControllerAnimated:YES]; +} @end